gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 10:56:09 25 4
gpt4 key购买 nike

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

  • 每个执行上下文都有独特的词法/var 环境作为属性。 (新运行 = 新 ex.context = variableEnv 对象的新实例 = 具有新引用的新变量)

  • 并且这些词法/变量环境包含您的所有变量(标识符-值映射)。

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

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()

所以从上面^,当你返回一个嵌入式函数1时,你返回的是一个函数实例/对象的引用,它是一个特定执行上下文的词法/变量环境的属性。

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

这是考虑 JS 变量的正确方法还是错误方法?

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

最佳答案

Is this a correct or incorrect way to think of JS variables?

是的,这是概念化作用域的好方法。但请记住,这只是一个概念,实际的 js 引擎可能会以不同的方式实现它(尤其是优化它)。不过,它仍将具有与模型相同的结果。

Anyone have a link/code/image of an actual JS execution context object?

我在

找到了几个不错的插图

(但不会在这里复制图像以尊重各自作者的版权)

关于javascript - 将所有 JS 代码和变量视为执行上下文的属性是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56807796/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com