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
声明一个具有块级作用域的变量,则为每个循环迭代创建一个新的绑定。
参考:【前端小智】