让我们输入Javascript。混乱
我真的很困惑这个代码让我们输入Javascript。混乱,javascript,ecmascript-6,Javascript,Ecmascript 6,我真的很困惑这个代码 var-box=document.getElementsByClassName('box-value'); for(设i=0;i
var-box=document.getElementsByClassName('box-value');
for(设i=0;i 框[0]。onclick()代码>,因为第一个i
在块和中,而第二个i
(不在块中)和在运行单击处理程序之前设置为9
。您可以通过执行以下操作来模拟循环中的行为
{
let i = 0; // one variable that stays constant
box[i].onclick = function(){
console.log(i);
};
}
let i = 9; // a different variable
您还可以通过将作用域置于循环中来模拟赋值的变化行为:
let i = 0;
for(; i < box.length; i++) {
box[i].onclick = function() {
console.log(i);
};
console.log("End loop. i:" + i);
}
设i=0;
对于(;i
在for
循环中使用let
声明的i
在循环结束后将不存在。第二个i
是独立的,您可以将其设置为9,这就是第二个i
的值为9的原因
@trincot我不认为复制品适用于这里什么部分你不明白?您希望得到什么日志?@Bergi问题不一样,但也包括for
循环中的let
。@Bergi,我已经删除了副本。。。以防万一,let
和block scope的使用在这里值得单独回答。