gpt4 book ai didi

javascript - 就浏览器兼容性而言,在 javascript 中使用 "let"?

转载 作者:可可西里 更新时间:2023-11-01 02:15:23 26 4
gpt4 key购买 nike

在 javascript 中使用 let 关键字有哪些选项。看来它真的很有用。

我看过 traceur ,但我想知道是否还有其他选择,所以我不必通过它运行整个项目。

是否有可能使用某种类型的 polyfill 或库。或者我基本上必须等到所有旧浏览器都消失才能在本地使用它......

最佳答案

让我引用一下我刚刚在 You Don't Know JS: Scope & Closures - Appendix B: Polyfilling Block Scope 上读到的内容

PS:这是根据 Creative Commons CC BY-NC-ND 3.0 许可的所以只要提到引用就可以分享

前方大引号:

考虑下面的例子

{
let a = 2;
console.log( a ); // 2
}

console.log( a ); // ReferenceError

这在 ES6 环境中非常有用。但是我们可以在 ES6 之前这样做吗?捕获就是答案。

try{throw 2}catch(a){
console.log( a ); // 2
}
console.log( a ); // ReferenceError

哇哦!那是一些丑陋、奇怪的代​​码。我们看到一个 try/catch 看似强行抛出一个错误,但它抛出的“错误”只是一个值 2,然后接收它的变量声明在 catch(a) 子句中。头脑:炸了。

没错,catch 子句具有 block 作用域,这意味着它可以在 ES6 之前的环境中用作 block 作用域的 polyfill。

“但是……”,你说。 “......没有人愿意写那样丑陋的代码!”这是真的。也没有人编写(部分)CoffeeScript 编译器输出的代码。这不是重点。

重点是工具可以转换 ES6 代码以在 ES6 之前的环境中工作。您可以使用 block 作用域编写代码,并从此类功能中获益,并让构建步骤工具负责生成在部署时实际工作的代码。

这实际上是所有(咳咳,大多数)ES6 的首选迁移路径:在从 pre-ES6 到 ES6 的过渡期间使用代码转换器来获取 ES6 代码并生成 ES5 兼容的代码。

关于javascript - 就浏览器兼容性而言,在 javascript 中使用 "let"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13581537/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com