Page 78 - 你不知道的JavaScript(上卷)
P. 78

启设置项,这样就会生成标准的 ES6 代码。

                 更重要的,你甚至可以使用尚未成为 ES 官方标准的、更加好用的显式 let 声明。


                 B.3 性能


                 最后简单地看一下 try/catch 带来的性能问题,并尝试回答“为什么不直接使用 IIFE 来创
                 建作用域”这个问题。

                 首先,try/catch 的性能的确很糟糕,但技术层面上没有合理的理由来说明 try/catch 必
                 须这么慢,或者会一直慢下去。自从 TC39 支持在 ES6 的转换器中使用 try/catch 后,
                 Traceur 团队已经要求 Chrome 对 try/catch 的性能进行改进,他们显然有很充分的动机来
                 做这件事情。

                 其次,IIFE 和 try/catch 并不是完全等价的,因为如果将一段代码中的任意一部分拿出来
                 用函数进行包裹,会改变这段代码的含义,其中的 this、return、break 和 contine 都会
                 发生变化。IIFE 并不是一个普适的解决方案,它只适合在某些情况下进行手动操作。

                 最后问题就变成了:你是否想要块作用域?如果你想要,这些工具就可以帮助你。如果不
                 想要,继续使用 var 来写代码就好了!





































                                                                    块作用域的替代方案   |   63
   73   74   75   76   77   78   79   80   81   82   83