繁体   English   中英

Javascript 闭包 - 理解 for 循环

[英]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初始化为 0
  • _
  • 检查是否i < 5 (它是)
  • 执行身体
  • i增加到 1
  • _
  • 检查是否i < 5 (它是)
  • 执行身体
  • i增加到 2
  • _
  • 检查是否i < 5 (它是)
  • 执行身体
  • i增加到 3
  • _
  • 检查是否i < 5 (它是)
  • 执行身体
  • i增加到 4
  • _
  • 检查是否i < 5 (它是)
  • 执行身体
  • i增加到 5
  • _
  • 检查i < 5 (不是)
  • 结束循环

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM