我可能错了,但将JS代码中的所有内容概念化为执行上下文的属性似乎是安全的(要么是全局的,要么是函数的,或者是eval()执行上下文的)。为什么?
闭包可能是一个很好的支持示例:
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执行上下文对象的链接/代码/映像吗?
发布于 2019-06-28 14:19:11
这是一个正确或不正确的方式来考虑JS变量吗?
是的,这是概念化作用域的好方法。但请记住,它只是一个概念,一个实际的js引擎可能会实现它不同(特别是,优化它的地狱)。尽管如此,它的结果仍将与模型相同。
有人有实际JS执行上下文对象的链接/代码/映像吗?
我发现了几幅很好的插图
(但不愿在此复制图片以尊重相关作者的版权)
https://stackoverflow.com/questions/56807796
复制相似问题