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
功能,包括 let
和 const
).
然后您需要在构建应用程序时将 Typescript 代码编译成 Javascript 代码。
好吧,在 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
功能,包括 let
和 const
).
然后您需要在构建应用程序时将 Typescript 代码编译成 Javascript 代码。