object - 当用户单击“按钮 4”时,控制台会记录什么内容,为什么?
问题描述
考虑以下代码片段:
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
都将始终记录到控制台。
这是因为,在调用该onclick
方法时(对于任何按钮),for 循环已经完成并且变量i
的值已经是5
.
奖励点,你可以阅读更多关于执行上下文、变量对象、激活对象和内部“范围”属性的信息,这有助于闭包行为。你会在这里理解魔法。
推荐阅读
- python - 将附件从 one2many 字段复制到另一个 one2many odoo 10
- ios - iOS开发Wifi-Call
- javascript - 我应该如何在引导程序中包含链接以进行表单验证
- ruby-on-rails - 资产管道中不存在资产“ ”
- asp.net - 在每小时计划 Azure 数据工厂 v2 的情况下首次运行时触发新的管道实例
- javascript - 为什么 !+ [] = 'true',我无法测试'!' 以任何方式
- amazon-web-services - AWS CloudFront 显示使用云前端拒绝访问 S3 存储桶?
- r - 确定失配 (MM) 和完美匹配 (PM) 芯片设计
- mongodb - 计算数组中子文档的总数
- css - 从 XAMPP 到 LAMPP 中缺少 CSS 文件和其他资源