cc *_*ung 4 javascript variables scope for-loop
有以下javascript代码
// note: declaring i in this loop
for( var i=0; i<args.length; i++ ) {
var elem = args[i];
...
if( elem.attr == 'class' ) {
// note declaring arr and i in this loop
for( var arr=elem.val.split(' '), i=0; i<arr.length; i++ ) {
element.classList.add(arr[classCt]);
}
continue;
}
}
Run Code Online (Sandbox Code Playgroud)
问题是i第二个for循环i与第一个for循环中声明的相同.
认为该var构造允许用逗号分隔多个变量.
当改变i到classCt在第二循环中,代码发挥预期
您只有一个范围,因此只能有一个具有相同名称的变量.你是正确的,var允许用逗号分隔多个变量,但你不能在同一范围内声明两个具有相同名称的不同变量.您只是重新声明已存在的变量.
要么改变它classCt,要么做我做的事情并使用变量j(等等)来嵌套循环迭代器:
var i, j, k, l;
for(i = 0; i < 10; i++){
for(j = 0; j < 10; j++){
for(k = 0; k < 10; k++){
for(l = 0; l < 10; l++){
}
}
}
}
Run Code Online (Sandbox Code Playgroud)