无法在 Safari Javascript 中使用 "let" 关键字?

Can't use "let" keyword in Safari Javascript?

我不明白使用 "let" 关键字的最佳方式...

这里有一个 JSFiddle 展示了它的实际效果:https://jsfiddle.net/p6cgtyg6/1/

所以 -- 我不介意要求用户使用现代版本的浏览器。

如果老实说没有支持此关键字的 Safari 版本,我不介意排除 Safari。 (这是真的吗?为什么每个人都把所有的时间都花在 IE 上,而 Safari 在 ES6 方面看起来更糟糕?我错过了什么吗?)。

但是我应该如何在不阻止 Chrome/IE 的情况下允许 "let" 在 Firefox 中工作? (我还没有找到人们抱怨 Firefox 脚本标签的行为与 Chrome 有何不同的链接,我本以为会有更多的抱怨,所以我想我一定错过了一些明显的东西......)

查看此 ES6 关键字的浏览器兼容性。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let#Browser_compatibility

还有 用于 ES6 特征检测。

let是ECMAScript 6规范的一部分,ECMAScript 6本身处于'draft'状态。即使是不完整的形式,实际浏览器版本也不完全支持其功能。

既然你今天想深入 ES6 进行生产,你最好的选择是使用 ES6 到 ES5 的转译器,最突出的是 Babel and Traceur, which are available as both CLI and packages for the build system of your choice. There are online tools for Babel and Traceur to try them out. And Scratch JS Chrome 的扩展同时使用 Babel 和 Traceur 并且是如果构建系统不是一个选项,则非常适合开发和编译 ES6 脚本。

这里 up-to-date comparison table 在浏览器和 ES6 编译器中都支持 ES6 功能。

这里是 a great collection 个 ES6 相关工具。

关于 Safari 8,它只是 not supported ; for that browser, I'd recommend using Babel

如果您直觉 this bug 不会很快得到修复* 那么您可以使用一个脚本来检测 Firefox,然后它会为您的脚本注入适合该类型的值属性。

作为旁注,我建议不要使用 let 块——除非你想使用 this transpiler—nor let expressions which will be dropped

* 已在 Firefox 44 中修复