var array = [];
for(var i = 0; i <4; i++) {
array.push(() => i);
}
var newArray = array.map(el => el());
console.log(newArray); // ??
“newArray”中有哪些元素?
答案:[3,3,3]
在for循环时 建立了一个闭包环境,而在箭头函数中并没声明变量 i 所以会去上一层语义环境去找,在寻找时for循环并不会停止,当箭头函数找到时,循环已经完成 i = 3;
var array = [];
for(var i = 0; i <4; i++) {
array.push(() => i);
}
var newArray = array.map(el => el());
console.log(newArray); // ??
“newArray”中有哪些元素?
答案:[3,3,3]
在for循环时 建立了一个闭包环境,而在箭头函数中并没声明变量 i 所以会去上一层语义环境去找,在寻找时for循环并不会停止,当箭头函数找到时,循环已经完成 i = 3;