ES2015 中的
然而,使用迭代对象的
let
语句允许我们声明块级作用域变量,因此例如下面的代码会按照我们的预期工作:let fs = [];
for (let i = 0; i < 3; i++) {
fs.push(() => i);
}
console.log(fs.map(f => f())); // 0, 1, 2
然而,使用迭代对象的
for…of
循环在 Firefox 中似乎不起作用。在这里,块级作用域被忽略,我们得到与使用 var
相同的结果:fs = [];
let nums = [0, 1, 2];
for (let i of nums) {
fs.push(() => i);
}
console.log(fs.map(f => f())); // 2, 2, 2
为什么这里let
的行为不起作用,而for...of
循环在内部有何不同,导致此处出现问题?
0,1,2
。https://babeljs.io/repl/ - chiliNUT