我不明白使用“let”关键字的最佳方式......
<script type="application/javascript;version=1.7"/>
,但此脚本类型甚至在IE11,Chrome45,Safari8中均未被识别为Javascript。这是一个JSFiddle,它显示了它的实际效果:https://jsfiddle.net/p6cgtyg6/1/
所以 - 我不介意要求用户使用他们浏览器的现代版本。
如果确实没有支持此关键字的Safari版本,我不介意排除Safari。 (这是真的吗?为什么每个人都花费所有时间来关注IE,当时Safari在ES6方面看起来更糟糕?我错过了什么吗?)。
但是我应该如何允许“让”在Firefox中工作而不阻止Chrome / IE? (我还没有找到人们关于Firefox脚本标签与Chrome的行为方式不同的链接,我预计会有更多投诉,所以我认为我一定错过了一些明显的东西......)
答案 0 :(得分:5)
关于Safari 8,它只是not supported;对于该浏览器,我建议使用Babel。
如果您有直觉感觉this bug不会很快修复*那么您可以使用一个检测Firefox的脚本,然后为您的脚本注入具有type属性的适当值。
作为旁注,我建议不要使用let blocks - 除非你想使用this transpiler - 也不要让表达式为will be dropped。
*已在Firefox 44中修复
答案 1 :(得分:4)
let
是ECMAScript 6规范的一部分,ECMAScript 6本身就是草案中的一部分。状态。即使是不完整的形式,它的功能也不能被实际的浏览器版本完全支持。
由于您希望今天深入ES6进行制作,最好的选择是使用ES6到ES5的转换器,最突出的是Babel和Traceur,它们既可用作CLI,也可用作包您选择的构建系统。有Babel和Traceur的在线工具可以试用它们。 Chrome的Scratch JS扩展程序同时使用Babel和Traceur,如果构建系统不是选项,则非常适合开发和编译ES6脚本。
以下是up-to-date comparison table,它在浏览器和ES6编译器中都支持ES6功能。
这是ES6相关工具的a great collection。
答案 2 :(得分:1)
请参阅此ES6关键字的浏览器兼容性。
另外see this SO post用于ES6特征检测。