我在ECMAScript 6中尝试了一些示例。与其他浏览器相比,它的工作方式不同。这会在Firefox中返回true
,但会在IE中返回false
。为什么这在Internet Explorer中有所不同?
let callbacks = []
for (let i = 0; i <= 2; i++) {
callbacks[i] = function () { console.log(i); return i * 2 }
}
console.log(callbacks[0]() === 0);
console.log(callbacks[1]() === 2);
console.log(callbacks[2]() === 4);
答案 0 :(得分:1)
根据caniuse.com IE11的一种支持 let :
let 变量没有分别绑定到 for 循环的每次迭代
答案 1 :(得分:0)
对于正在寻求IE11快速解决方案的人们
let callbacks = []
for (let ie11i = 0; ie11i <= 2; ie11i++) {
/*IE11 let bug bypass*/
let i = ie11i;
callbacks[i] = function () { console.log(i); return i * 2 }
}
console.log(callbacks[0]() === 0);
console.log(callbacks[1]() === 2);
console.log(callbacks[2]() === 4);
i
而不是ie11i
,