JavaScript全局变量&自我调用匿名函数

时间:2010-10-28 17:21:02

标签: javascript

所以我一直在阅读Javascript - The Good Parts并且Crockford指出的一件事是在Javascript中使用全局变量的弱点,以这种方式,如果你的产品以某种方式扩展,它依赖于一个'全局'变量,它可能会无意中被设置。

这一切都很好,而且我理解保护变量的优点/缺点,以及闭包等其他方式。但是,我正在做一些思考,并将代码包装在如下函数中:

(function () {
    var x = 'meh';
})();
(function () {
    alert(typeof x); // undefined
})();

赋予其可变范围,从而防止变量的交叉污染。我不确定这种方法是否存在明显的缺点,并且想知道社区是否有任何意见,或者我是否只是过分思考并忽略了主要观点。

4 个答案:

答案 0 :(得分:6)

这是一种完全合法的做事方式 - 函数内部的变量(只要它们以var为前缀)都是函数的 local 。它被称为module pattern,它被广泛接受。

答案 1 :(得分:0)

要使用javascript创建应用程序,您必须尝试将变量保存在本地范围内,以及命名空间内的任何内容。这是一个很好的实践,可以防止一系列伤害代码和不受欢迎的行为。

阅读this

这是一篇关于这样做的优点的文章。

答案 2 :(得分:0)

使它成为一个全球功能不是答案。你为什么不这样做?这使x保持在全局命名空间之外。

(function () {
    var x = 'meh';
    alert(typeof x);  //string
})();

答案 3 :(得分:0)

[root@Master admin]# ls /opt/test_tomcat/app/sample/
a