for(let i=0;i<el.length;++i)
{
el[i].addEventListener(click,function()
{
console.log(i);
});
}
一个问题为什么let可以无视i最后的值?而可以根据最初的i进行打印
for(let i=0;i<el.length;++i)
{
el[i].addEventListener(click,function()
{
console.log(i);
});
}
一个问题为什么let可以无视i最后的值?而可以根据最初的i进行打印
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
3 回答867 阅读✓ 已解决
3 回答1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
是因为 ES6 新增了块作用域的存在。
对于
let
来说,每次for
循环内部都是一个新的块,下一次循环块里访问的是i
就是自己这个块里的,跟上一次循环没关系。用 ES6 之前的函数作用域来模拟块作用域的话,就类似于: