gpt4 book ai didi

javascript - 解释器如何处理在全局对象中引用的局部函数?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:35:08 25 4
gpt4 key购买 nike

window.onload = function() {
var a = function(x) {
console.log(x);
};
document.onclick = function() {
a(1);
};
document.onkeyup = function() {
a(2);
};
};

我很清楚为什么会这样,但不知道它是如何工作的。

window.onload ends 时,a 被销毁,但它引用的函数仍然对事件处理程序可用,因为它是在更高的范围内声明,如果我理解正确的话。

解释器是否在后台保留对函数的隐藏引用,或者解释器是否以某种方式内联该函数?这种避免全局变量的代码是否有效?谢谢。

最佳答案

When window.onload ends, a is destroyed...

这个假设是错误的。每当您在另一个函数中创建函数时,这些内部函数都会阻止垃圾收集器清理外部函数的范围。

推荐阅读:http://www.ibm.com/developerworks/web/library/wa-memleak/

关于javascript - 解释器如何处理在全局对象中引用的局部函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14682318/

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