与 Java 等语言中的 block 级作用域相比,Javascript 中的函数级作用域的优缺点是什么?
我希望看到使用 block 级范围更难或不可能实现的函数级范围用法示例。
最佳答案
首先想到的例子是:JavaScript 对 closures 的处理如果使用 block 级作用域实现,成本会高得多。
当你在 JavaScript 中输入一个函数时,一个对象被分配(好吧,一对,但我们将关注一个)最终成为“变量对象”——也就是说,所有的参数和局部变量该函数调用被保留(作为属性)。闭包实际使用的是这个对象(不仅仅是它看起来使用的“符号”;这是一个常见的误解)。这些对象串成一条链,称为作用域链,用于解析不合格的符号。
想象一下,如果每个 block 都引入新的作用域,成本会增加多少。
关于javascript - 函数级范围的优点和缺点(特别是在 Javascript 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3791430/