将变量分配给全局范围是否存在任何危险或好处

时间:2014-06-14 15:12:35

标签: javascript oop

最近我读了一篇博客文章(我遗憾地失去了它),显示的代码如下:

// 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

并将此作为一种解决方案,通过将全局变量转换为全局范围的对象属性来删除变量(这是不可能的)。但是这样做有什么危险吗?它的真正好处是什么?

1 个答案:

答案 0 :(得分:0)

我总是在本地范围内工作,当变量(对象)不再在范围内(需要)时,它们被垃圾收集器处理掉。 并且我不建议在全局范围内工作,只针对整个程序中需要的功能,并且应始终可用,因此永远不必删除。

否则你不应该使用全球范围。 它是编程的常用规则之一,你应该避免使用全局变量。 全局不安全,程序中的所有内容都可以访问并修改。

你不应该使用它,如果你能用本地人(内部函数)来避免它。

不是使用大量的全局变量,而是通过函数将局部变量作为参数(参数)传递。 这样,未授权的函数就无法访问变量(读取或写入变量)。

(存储器) 垃圾收集器也不会收集全局变量,因为总会有对它的引用。 所以你会分配你不再使用的内存。或者在函数中,现在不相关。

还与您的问题相关: delete仅适用于对象属性。

如果您的意思是全局的Web应用程序的全局。     app =这个 捕获全局(窗口)所以没有必要获取此实例,因为它已经是全局的。