gpt4 book ai didi

javascript - 当内部函数返回时,javascript如何保留外部函数的执行上下文?

转载 作者:行者123 更新时间:2023-12-03 10:03:58 25 4
gpt4 key购买 nike

我正在阅读这两篇博客:execution contextscope chain由 David Shariff 出版,深入探讨了 javascript 的执行上下文和作用域链概念。

阅读上述博客后,我不清楚的一件事是 javascript 如何防止父函数的执行上下文被垃圾收集?

让我们看一下以下非常简单的代码:

function outer(){
var v1 = 'variable in outer function';

function inner(){
alert(v1);
}

return inner;
}

var innerFunc = outer();

当调用外部函数时,我们得到一个指向内部函数的指针。因此,在这个阶段,内部函数已创建/定义,但尚未调用。

根据博客,只有当函数被调用时,作用域链才会建立。因此,在调用内部函数之前,我认为没有指针引用外部函数的执行上下文。那么js引擎如何防止外部函数的执行上下文被垃圾回收呢?

最佳答案

内部函数引用了它在1中创建的上下文。虽然作用域链在调用函数之前并不存在,但作用域链并不是使外部上下文保持事件状态的东西。

1或者严格来说,从内部函数到它使用的所有闭包变量存在一些引用链。它不一定要保持整个上下文处于事件状态。

关于javascript - 当内部函数返回时,javascript如何保留外部函数的执行上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30451047/

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