'mt' used outside of binding context.
100 if (mesh.geometry.morphTargets !== "undefined") {
101 var morphVector = new THREE.Vector4(vector.x, vector.y, vector.z);
102
103 for (var mt = 0; mt < mesh.geometry.morphTargets.length; mt++) {104 //not pretty, but it gets the job done - jc
105 morphVector.lerp(new THREE.Vector4(morphMatricesX[mt], morphMatricesY[mt], morphMatricesZ[mt], 1), morphMatricesInfluence[mt]);
106 }
'mt' used outside of binding context.
100 if (mesh.geometry.morphTargets !== "undefined") {
101 var morphVector = new THREE.Vector4(vector.x, vector.y, vector.z);
102
103 for (var mt = 0; mt < mesh.geometry.morphTargets.length; mt++) {104 //not pretty, but it gets the job done - jc
105 morphVector.lerp(new THREE.Vector4(morphMatricesX[mt], morphMatricesY[mt], morphMatricesZ[mt], 1), morphMatricesInfluence[mt]);
106 }
'mt' used outside of binding context.
100 if (mesh.geometry.morphTargets !== "undefined") {
101 var morphVector = new THREE.Vector4(vector.x, vector.y, vector.z);
102
103 for (var mt = 0; mt < mesh.geometry.morphTargets.length; mt++) {104 //not pretty, but it gets the job done - jc
105 morphVector.lerp(new THREE.Vector4(morphMatricesX[mt], morphMatricesY[mt], morphMatricesZ[mt], 1), morphMatricesInfluence[mt]);
106 }
'mt' used outside of binding context.
102
103 for (var mt = 0; mt < mesh.geometry.morphTargets.length; mt++) {
104 //not pretty, but it gets the job done - jc
105 morphVector.lerp(new THREE.Vector4(morphMatricesX[mt], morphMatricesY[mt], morphMatricesZ[mt], 1), morphMatricesInfluence[mt]);106 }
107 }
108
'mt' used outside of binding context.
102
103 for (var mt = 0; mt < mesh.geometry.morphTargets.length; mt++) {
104 //not pretty, but it gets the job done - jc
105 morphVector.lerp(new THREE.Vector4(morphMatricesX[mt], morphMatricesY[mt], morphMatricesZ[mt], 1), morphMatricesInfluence[mt]);106 }
107 }
108
'mt' used outside of binding context.
102
103 for (var mt = 0; mt < mesh.geometry.morphTargets.length; mt++) {
104 //not pretty, but it gets the job done - jc
105 morphVector.lerp(new THREE.Vector4(morphMatricesX[mt], morphMatricesY[mt], morphMatricesZ[mt], 1), morphMatricesInfluence[mt]);106 }
107 }
108
'mt' used outside of binding context.
102
103 for (var mt = 0; mt < mesh.geometry.morphTargets.length; mt++) {
104 //not pretty, but it gets the job done - jc
105 morphVector.lerp(new THREE.Vector4(morphMatricesX[mt], morphMatricesY[mt], morphMatricesZ[mt], 1), morphMatricesInfluence[mt]);106 }
107 }
108
'morphVector' used outside of binding context.
108
109 for (var k = 0; k < 4; k++) {
110 if (mesh.geometry.morphTargets !== "undefined") {
111 var tempVector = new THREE.Vector4(morphVector.x, morphVector.y, morphVector.z);112 } else {
113 var tempVector = new THREE.Vector4(vector.x, vector.y, vector.z);
114 }
'morphVector' used outside of binding context.
108
109 for (var k = 0; k < 4; k++) {
110 if (mesh.geometry.morphTargets !== "undefined") {
111 var tempVector = new THREE.Vector4(morphVector.x, morphVector.y, morphVector.z);112 } else {
113 var tempVector = new THREE.Vector4(vector.x, vector.y, vector.z);
114 }
'morphVector' used outside of binding context.
108
109 for (var k = 0; k < 4; k++) {
110 if (mesh.geometry.morphTargets !== "undefined") {
111 var tempVector = new THREE.Vector4(morphVector.x, morphVector.y, morphVector.z);112 } else {
113 var tempVector = new THREE.Vector4(vector.x, vector.y, vector.z);
114 }
'mt' used outside of binding context.
87 let morphMatricesZ = [];
88 let morphMatricesInfluence = [];
89
90 for (var mt = 0; mt < mesh.geometry.morphTargets.length; mt++) { 91 //collect the needed vertex info - jc
92 morphMatricesX[mt] = mesh.geometry.morphTargets[mt].vertices[vertexIndex].x;
93 morphMatricesY[mt] = mesh.geometry.morphTargets[mt].vertices[vertexIndex].y;
'mt' used outside of binding context.
87 let morphMatricesZ = [];
88 let morphMatricesInfluence = [];
89
90 for (var mt = 0; mt < mesh.geometry.morphTargets.length; mt++) { 91 //collect the needed vertex info - jc
92 morphMatricesX[mt] = mesh.geometry.morphTargets[mt].vertices[vertexIndex].x;
93 morphMatricesY[mt] = mesh.geometry.morphTargets[mt].vertices[vertexIndex].y;
'mt' used outside of binding context.
87 let morphMatricesZ = [];
88 let morphMatricesInfluence = [];
89
90 for (var mt = 0; mt < mesh.geometry.morphTargets.length; mt++) { 91 //collect the needed vertex info - jc
92 morphMatricesX[mt] = mesh.geometry.morphTargets[mt].vertices[vertexIndex].x;
93 morphMatricesY[mt] = mesh.geometry.morphTargets[mt].vertices[vertexIndex].y;
'mt' used outside of binding context.
89
90 for (var mt = 0; mt < mesh.geometry.morphTargets.length; mt++) {
91 //collect the needed vertex info - jc
92 morphMatricesX[mt] = mesh.geometry.morphTargets[mt].vertices[vertexIndex].x; 93 morphMatricesY[mt] = mesh.geometry.morphTargets[mt].vertices[vertexIndex].y;
94 morphMatricesZ[mt] = mesh.geometry.morphTargets[mt].vertices[vertexIndex].z;
95 morphMatricesInfluence[mt] = mesh.morphTargetInfluences[mt];
'mt' used outside of binding context.
89
90 for (var mt = 0; mt < mesh.geometry.morphTargets.length; mt++) {
91 //collect the needed vertex info - jc
92 morphMatricesX[mt] = mesh.geometry.morphTargets[mt].vertices[vertexIndex].x; 93 morphMatricesY[mt] = mesh.geometry.morphTargets[mt].vertices[vertexIndex].y;
94 morphMatricesZ[mt] = mesh.geometry.morphTargets[mt].vertices[vertexIndex].z;
95 morphMatricesInfluence[mt] = mesh.morphTargetInfluences[mt];
'mt' used outside of binding context.
90 for (var mt = 0; mt < mesh.geometry.morphTargets.length; mt++) {
91 //collect the needed vertex info - jc
92 morphMatricesX[mt] = mesh.geometry.morphTargets[mt].vertices[vertexIndex].x;
93 morphMatricesY[mt] = mesh.geometry.morphTargets[mt].vertices[vertexIndex].y; 94 morphMatricesZ[mt] = mesh.geometry.morphTargets[mt].vertices[vertexIndex].z;
95 morphMatricesInfluence[mt] = mesh.morphTargetInfluences[mt];
96 }
'mt' used outside of binding context.
90 for (var mt = 0; mt < mesh.geometry.morphTargets.length; mt++) {
91 //collect the needed vertex info - jc
92 morphMatricesX[mt] = mesh.geometry.morphTargets[mt].vertices[vertexIndex].x;
93 morphMatricesY[mt] = mesh.geometry.morphTargets[mt].vertices[vertexIndex].y; 94 morphMatricesZ[mt] = mesh.geometry.morphTargets[mt].vertices[vertexIndex].z;
95 morphMatricesInfluence[mt] = mesh.morphTargetInfluences[mt];
96 }
'mt' used outside of binding context.
91 //collect the needed vertex info - jc
92 morphMatricesX[mt] = mesh.geometry.morphTargets[mt].vertices[vertexIndex].x;
93 morphMatricesY[mt] = mesh.geometry.morphTargets[mt].vertices[vertexIndex].y;
94 morphMatricesZ[mt] = mesh.geometry.morphTargets[mt].vertices[vertexIndex].z; 95 morphMatricesInfluence[mt] = mesh.morphTargetInfluences[mt];
96 }
97 }
'mt' used outside of binding context.
92 morphMatricesX[mt] = mesh.geometry.morphTargets[mt].vertices[vertexIndex].x;
93 morphMatricesY[mt] = mesh.geometry.morphTargets[mt].vertices[vertexIndex].y;
94 morphMatricesZ[mt] = mesh.geometry.morphTargets[mt].vertices[vertexIndex].z;
95 morphMatricesInfluence[mt] = mesh.morphTargetInfluences[mt]; 96 }
97 }
98 var finalVector = new THREE.Vector4();
'mt' used outside of binding context.
92 morphMatricesX[mt] = mesh.geometry.morphTargets[mt].vertices[vertexIndex].x;
93 morphMatricesY[mt] = mesh.geometry.morphTargets[mt].vertices[vertexIndex].y;
94 morphMatricesZ[mt] = mesh.geometry.morphTargets[mt].vertices[vertexIndex].z;
95 morphMatricesInfluence[mt] = mesh.morphTargetInfluences[mt]; 96 }
97 }
98 var finalVector = new THREE.Vector4();
'tempVector' used outside of binding context.
110 if (mesh.geometry.morphTargets !== "undefined") {
111 var tempVector = new THREE.Vector4(morphVector.x, morphVector.y, morphVector.z);
112 } else {
113 var tempVector = new THREE.Vector4(vector.x, vector.y, vector.z);114 }
115 tempVector.multiplyScalar(weights[k]);
116 //the inverse takes the vector into local bone space
'tempVector' used outside of binding context.
112 } else {
113 var tempVector = new THREE.Vector4(vector.x, vector.y, vector.z);
114 }
115 tempVector.multiplyScalar(weights[k]);116 //the inverse takes the vector into local bone space
117 //which is then transformed to the appropriate world space
118 tempVector.applyMatrix4(inverses[k]).applyMatrix4(skinMatrices[k]);
'tempVector' used outside of binding context.
115 tempVector.multiplyScalar(weights[k]);
116 //the inverse takes the vector into local bone space
117 //which is then transformed to the appropriate world space
118 tempVector.applyMatrix4(inverses[k]).applyMatrix4(skinMatrices[k]);119 finalVector.add(tempVector);
120 }
121
'tempVector' used outside of binding context.
116 //the inverse takes the vector into local bone space
117 //which is then transformed to the appropriate world space
118 tempVector.applyMatrix4(inverses[k]).applyMatrix4(skinMatrices[k]);
119 finalVector.add(tempVector);120 }
121
122 output += "\t\t\tvertex " + finalVector.x + " " + finalVector.y + " " + finalVector.z + "\n";
'tempVector' used outside of binding context.
108
109 for (var k = 0; k < 4; k++) {
110 if (mesh.geometry.morphTargets !== "undefined") {
111 var tempVector = new THREE.Vector4(morphVector.x, morphVector.y, morphVector.z);112 } else {
113 var tempVector = new THREE.Vector4(vector.x, vector.y, vector.z);
114 }
Description
Variables should be used inside of their binding context.
This helps avoid difficult bugs with variable hoisting.
It is a bad practice to use var
declarations because variables declared using var
can be accessed in a function-wide scope.
They can even be accessed before declaration.
In such cases, their value would be undefined
because only declarations and not initializations are hoisted.
Bad Practice
function doIf() {
if (cond()) {
var build = true;
}
console.log(build);
}
function doIfElse() {
if (cond()) {
var build = true;
} else {
var build = false;
}
console.log(build)
}
Recommended
function doIf() {
let build;
if (cond()) {
build = true;
}
console.log(build);
}