【问题标题】:JavaScript lexical environments as objectsJavaScript 词法环境作为对象
【发布时间】:2018-12-13 20:24:18
【问题描述】:

我不禁注意到 JS 对象和词法环境之间的类比(如解释,例如,here)。两者都是名称/值对的容器。两者都有一个指向另一个同类事物的链接:在词法环境的情况下是父环境,在 JS 对象的情况下是原型对象。这两种链接实际上服务于相同的目的:在词法环境的情况下,在词法环境链中查找变量的值,在对象的情况下,在原型链中查找属性的值。

鉴于这种密切的类比,有没有办法在 JS 程序中将词法环境作为对象引用?将来有没有计划在语言中添加这样的功能?我敢肯定它对某些东西很有用...

【问题讨论】:

标签: javascript object lexical-scope


【解决方案1】:

类比分解的一个重要区别是:词法环境是通过静态代码分析创建的,不会改变它们的形状。它们是记录,而不是动态对象。这既可以帮助解释器/编译器优化查找,又可以防止它们被暴露为对象。

只有两件小事引入了动态范围:evalwith。 (后者允许将动态对象实际放入作用域链中)。他们都因此而被鄙视。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-18
    • 2017-03-25
    • 1970-01-01
    • 2021-03-24
    • 2017-07-21
    • 1970-01-01
    • 2018-10-29
    相关资源
    最近更新 更多