簡體   English   中英

循環中的 let 語句在 IE 中無法按預期工作

[英]let statement in loop doesn't work as expected in IE

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

根據caniuse.com IE11 支持

變量不單獨綁定到for循環的每次迭代

對於正在尋找 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 中的工作方式與任何其他瀏覽器相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM