javascript - 函数级范围的优点和缺点(特别是在 Javascript 中)

标签 javascript

与 Java 等语言中的 block 级作用域相比,Javascript 中的函数级作用域的优缺点是什么?

我希望看到使用 block 级范围更难或不可能实现的函数级范围用法示例。

最佳答案

首先想到的例子是:JavaScript 对 closures 的处理如果使用 block 级作用域实现,成本会高得多。

当你在 JavaScript 中输入一个函数时,一个对象被分配(好吧,一对,但我们将关注一个)最终成为“变量对象”——也就是说,所有的参数和局部变量该函数调用被保留(作为属性)。闭包实际使用的是这个对象(不仅仅是它看起来使用的“符号”;这是一个常见的误解)。这些对象串成一条链,称为作用域链,用于解析不合格的符号。

想象一下,如果每个 block 都引入新的作用域,成本会增加多少。

关于javascript - 函数级范围的优点和缺点(特别是在 Javascript 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3791430/

相关文章:

javascript - 如何用 ServiceWorker 生命周期替换 appcache 生命周期事件

javascript - 传输 `request` 请求的正确方法是什么?

javascript - firefox说 `this.view`未定义,但在控制台中转储对象时它明确定义

javascript - 如何使用 css3 动画制作此 Jquery animate()?

javascript - 在 JavaScript 中检查数字的小数点是否大于 .5?

javascript - Reactjs Link 不适用于 IE11 但适用于 Edge 和其他浏览器

javascript - 需要使用 javascript 为下拉列表创建 onChange/onSelect

javascript - 从 HTTP 页面通过 HTTPS 获取 JS 文件

javascript - 如何根据jsp中某个下拉选项的值更改表单中字段的属性?

javascript - OpenWeatherMap API HTTPS 拒绝 javascript