JavaScript: 旧浏览器如何支持let?

JavaScript: How to support let at old browsers?

好吧,在 ES6 中,我们使用 let 语句定义了块作用域。这很好,我们可以在现代浏览器上使用它。

旧的呢?如何支持?例如IE8、IE9。有什么标准的技巧可以实现这一目标吗?

您可以在此处查看当前的兼容性: https://kangax.github.io/compat-table/es6/#let

请注意,由于目前没有浏览器支持它,您可以使用 polyfill 或 https://google.github.io/traceur-compiler

等编译器

在大多数情况下,使用 var 就可以了。否则你将不得不封装在一些闭包中来模拟它。

使用 babel.js

Babel is a JavaScript compiler. Use next generation JavaScript, today.

Babel 会将您的 ES6 'transpile' 转换为 ES5 - 您可能必须限制自己使用 ES6 的子集以支持 IE < 9,但据我所知,let 没问题。

ES6 中的块级范围极大地修改了解释器定义范围和评估代码的方式。无法在旧版浏览器上填充此行为。

使用 ES6 功能的唯一解决方案是使用中间语言,例如 Typescript,它符合 EcmaScript(您可以在其中使用 ES6 功能,包括 letconst).

然后您需要在构建应用程序时将 Typescript 代码编译成 Javascript 代码。

另请参阅:What's new in Typescript 1.6