最近我读了一篇博客文章(我遗憾地失去了它),显示的代码如下:
// in global scope
var app = this;
greet = function() { return 'Hello World!' };
var sayGoodbye = function() { return 'Bye' };
delete greet;
delete sayGoodbye;
sayGoodbye(); // 'Bye'
app.greet(); // undefined
并将此作为一种解决方案,通过将全局变量转换为全局范围的对象属性来删除变量(这是不可能的)。但是这样做有什么危险吗?它的真正好处是什么?
答案 0 :(得分:0)
我总是在本地范围内工作,当变量(对象)不再在范围内(需要)时,它们被垃圾收集器处理掉。 并且我不建议在全局范围内工作,只针对整个程序中需要的功能,并且应始终可用,因此永远不必删除。
否则你不应该使用全球范围。 它是编程的常用规则之一,你应该避免使用全局变量。 全局不安全,程序中的所有内容都可以访问并修改。
你不应该使用它,如果你能用本地人(内部函数)来避免它。
不是使用大量的全局变量,而是通过函数将局部变量作为参数(参数)传递。 这样,未授权的函数就无法访问变量(读取或写入变量)。
(存储器) 垃圾收集器也不会收集全局变量,因为总会有对它的引用。 所以你会分配你不再使用的内存。或者在函数中,现在不相关。
还与您的问题相关: delete仅适用于对象属性。
如果您的意思是全局的Web应用程序的全局。 app =这个 捕获全局(窗口)所以没有必要获取此实例,因为它已经是全局的。