gpt4 book ai didi

javascript - 在javascript中,当一个函数名被指向其他地方后,有什么方法可以到达那个未命名的函数吗?

转载 作者:行者123 更新时间:2023-12-02 23:40:02 26 4
gpt4 key购买 nike

所以我明白函数名称只是指向实际函数的指针。

function justAPointer() { //do something }

我可以更改该指针名称:

justAPointer = 'oops';

现在该功能仍然存在,但有什么方法仍然可以实现它吗?

最佳答案

仅当有东西引用该函数时,该函数才仍然存在。否则,它就是要收集的垃圾,就像您的代码可能分配的其他任何东西一样。

如果创建一个对象:

var obj = { hello: "world" };

然后将“obj”重新分配给其他内容:

obj = 22;

那么该对象同样是垃圾。当然,同样,如果制作了引用的副本,它仍然存在:

var obj = { hello: "world" };
var copy = obj;
obj = 22;

那么显然“复制”仍然指代该对象。功能确实没有什么不同。

编辑 - SLaks 在评论中指出,可以通过某些方式将对函数的引用存放在某些位置,以确保持续的“ active ”对象(或函数)的访问权限,即使丢失了对该对象(或函数)的访问。一个例子是 setTimeout() 函数。传入该 API 的函数对象将保持事件状态,直到计时器关闭,但如果您的代码不保留该函数的其他链接,则您无法从运行时系统获取引用。对于可能与 DOM 元素关联的对象,存在(或曾经存在)类似的情况。这导致了(并且可能仍然会导致;我非常厌恶风险)问题,因为某些浏览器中的 DOM 垃圾收集器(猜测)不知道如何释放 JavaScript 分配的存储。

关于javascript - 在javascript中,当一个函数名被指向其他地方后,有什么方法可以到达那个未命名的函数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18064555/

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