gpt4 book ai didi

javascript - 将局部变量分配给全局对象时会发生什么?

转载 作者:行者123 更新时间:2023-11-29 10:19:32 24 4
gpt4 key购买 nike

请忽略这可以在没有变量的情况下重写。只是举个简单的例子。

window.onload = function() {
var a = document.body, b = function() {console.log(1)};
a.onkeydown = b;
};

我知道会发生什么:它起作用了。但是如何呢?

如果 b 是一个全局变量,解释器将存储对它的引用。在这个例子中,当局部变量被销毁时,解释器是否存储了对局部变量的引用,只是为了替换它,我假设是函数的副本?或者对局部变量的引用是否仍然存储在幕后的某个地方,然后重新调整用途?

最佳答案

函数(和其他对象)总是通过引用传递。 b 不包含该函数,而是指向它。当您分配 a.onkeydown = b 时,您使 a.onkeydown 指向同一个函数对象。然后函数结束,因此局部 b 变量被销毁,但它指向的函数仍然存在 - 只有当没有其他东西指向它时,它才会被垃圾收集器删除。

关于javascript - 将局部变量分配给全局对象时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14575429/

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