gpt4 book ai didi

javascript - `delete` 引用全局函数本身是一种不好的做法吗?

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

考虑这段 JavaScript 代码...

(function() {

window.myNameSpace_callback = function() {
// Do whatever.
delete window.myNameSpace_callback;
};

// Assume this does not return JSON, but has JavaScript code to be executed
// and also calls a user defined callback.
$.getScript('http://someapi.com/?callback=myNameSpace_callback');

})();

jsFiddle .

我使用上面的 jQuery 库的事实应该与问题无关。

delete 行之后,全局不存在。我这样做是为了让这个全局只在需要的时候保持活力。

但是,从全局对象中删除恰好是当前正在运行的函数的属性是不好的做法吗?

最佳答案

这样做没有错。

delete 关键字删除引用,而不是实际函数本身。您不能完全销毁 Javascript 中的对象;您只能删除对它的所有引用。 Garbage collection做剩下的。

因此,在对其所在函数的引用上调用 delete 并不重要,因为您只是从窗口命名空间中删除对它的引用。只要您仍然引用它,该函数就会一直存在。

window.myNameSpace_callback = function() {
delete window.myNameSpace_callback;

// We deleted the reference to the function off the window namespace,
// but we can still access it using arguments.callee
window.myNameSpace_callback_two = arguments.callee;
};

myNameSpace_callback();

myNameSpace_callback(); // Error, but what about...

myNameSpace_callback_two();

关于javascript - `delete` 引用全局函数本身是一种不好的做法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7313942/

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