循环中的let语句在IE中没有按预期工作

时间:2016-08-26 06:29:30

标签: javascript internet-explorer ecmascript-6 let

我在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);

2 个答案:

答案 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
  • 在IE11中将与其他任何浏览器相同。