【发布时间】:2012-03-18 01:52:02
【问题描述】:
有以下 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;
}
}
问题在于第二个for 循环中的i 与第一个for 循环中声明的i 相同。
认为var 构造允许以逗号分隔声明多个变量。
在第二个循环中将 i 更改为 classCt 时,代码按预期工作
【问题讨论】:
-
“在第二个循环中将 i 更改为 classCt 时,代码按预期工作” - 那你为什么不这样做呢?
-
将
i更改为classCt在哪里?第二个 for 循环中的i确实与第一个相同,因为您没有使用var再次对其进行初始化。
标签: javascript variables for-loop scope