【发布时间】:2017-01-02 17:38:40
【问题描述】:
我正在尝试 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);
【问题讨论】:
-
IE 不完全支持 ES6。
-
好的。我没有显示任何错误。但它返回的值是错误的。
-
这是一个已知的 IE 问题,即
for(...)初始化中的let无法正常工作。最简单的解决方法是将let j = i;添加为{ }块内的第一行,然后在您的函数中使用j- 这会产生您期望的结果。 -
其实不只是IE。 目前没有单一的 javascript 引擎在浏览器或服务器中支持完整的 ES6 规范。如果你想使用 ES6 特性,要么只使用具有广泛浏览器支持的非常有限的子集,要么使用像 babel 这样的转译器。如果你想使用纯 js,请使用 ES5。 ES6 不能在生产环境中使用。对于爱好项目来说没问题,因为您只需要它在您自己的浏览器中运行,这样您就可以使用浏览器支持的小子集。但是对于真正的生产代码就不行了。
-
@slebetman Safari 10 有 100% 的支持。并且所有主流浏览器都有非常广泛的支持。如果客户使用 Chrome,为什么不应该在生产代码中使用 ES6?
标签: javascript internet-explorer ecmascript-6 let