首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将所有JS代码和变量视为执行上下文的属性是正确的吗?

将所有JS代码和变量视为执行上下文的属性是正确的吗?
EN

Stack Overflow用户
提问于 2019-06-28 13:25:12
回答 1查看 82关注 0票数 3

我可能错了,但将JS代码中的所有内容概念化为执行上下文的属性似乎是安全的(要么是全局的,要么是函数的,或者是eval()执行上下文的)。为什么?

  • 每个执行上下文都有唯一的词法/var环境作为属性。(新运行=新前任。上下文= variableEnv对象的新实例=新引用的新变量)
  • 这些词法/变量环境包含所有变量(标识符-值映射)。

闭包可能是一个很好的支持示例:

代码语言:javascript
复制
function function0(sizevar) {
    s = sizevar * 2;
    return function function1() {
	    console.log(s);
        console.log(sizevar);
    };
}
    
var size12 = function0(12);
var size14 = function0(14);
size12()
size14()

因此,从上面的^,当您返回一个嵌入式function1时,您将返回一个函数实例/对象的引用,该函数实例/对象是一个特定执行上下文的词法/变量环境的属性。

当function0()返回function1()时,作用域链被绑定到执行上下文的状态(即它的variableEnv),即使执行上下文已经执行。

这是一个正确或不正确的方式来考虑JS变量吗?

有人有实际JS执行上下文对象的链接/代码/映像吗?

EN

回答 1

Stack Overflow用户

发布于 2019-06-28 14:19:11

这是一个正确或不正确的方式来考虑JS变量吗?

是的,这是概念化作用域的好方法。但请记住,它只是一个概念,一个实际的js引擎可能会实现它不同(特别是,优化它的地狱)。尽管如此,它的结果仍将与模型相同。

有人有实际JS执行上下文对象的链接/代码/映像吗?

我发现了几幅很好的插图

(但不愿在此复制图片以尊重相关作者的版权)

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56807796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档