javascript 中的闭包

抛砖引玉,看如下问题 结果会输出什么?


1、

var array = []; for(var i = 0; i <3; i++) { array.push(() => i); } var newArray = array.map(el => el()); console.log(newArray); // ??


2、

var array = []; for(let i = 0; i <3; i++) { array.push(() => i); } var newArray = array.map(el => el()); console.log(newArray); // ??


答案分解:

[3,3,3] [0,1,2]


for循环的头部声明带有var关键字的变量会为该变量创建单个绑定(存储空间),如果使用 let 声明一个具有块级作用域的变量,则为每个循环迭代创建一个新的绑定。


参考:【前端小智】

确认 取消