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.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
是因为 ES6 新增了块作用域的存在。
对于
let
来说,每次for
循环内部都是一个新的块,下一次循环块里访问的是i
就是自己这个块里的,跟上一次循环没关系。用 ES6 之前的函数作用域来模拟块作用域的话,就类似于: