[英]Javascript closures - understanding for loop
for (var i = 0; i < 5; i++) {
var btn = document.createElement('button');
btn.appendChild(document.createTextNode('Button ' + i));
btn.addEventListener('click', function(){ console.log(i); });
document.body.appendChild(btn);
}
在上面的代码中 - 无论按下什么按钮,输出总是 5,因为我在 js 中理解它是通过引用,当循环完成时,最终值将更新为 'i' - 但我有 1 个问题就是为什么 5 - 我认为它是 4 - 一旦 i 的值是 4 它不应该退出循环吗?? 我是否缺少对“for”循环的一些理解?
你的问题不是关于闭包,而是关于循环,对吧? 闭包是一个不同的故事,但循环很简单——它在检查是否通过条件之前执行增量步骤:
顺序是:
i
初始化为 0i < 5
(它是)i
增加到 1i < 5
(它是)i
增加到 2i < 5
(它是)i
增加到 3i < 5
(它是)i
增加到 4i < 5
(它是)i
增加到 5i < 5
(不是)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.