繁体   English   中英

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

[英]JavaScript global variables & self-invoking anonymous functions

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

一切都很好,我也知道以其他方式(例如闭包)保护变量的利弊。 但是,我正在做一些思考,然后将代码包装在这样的函数中:

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

赋予变量范围,从而防止变量的交叉污染。 我不确定这种方法是否存在公然的缺点,并且想知道社区是否有任何投入,或者我是否只是在考虑问题而忽略了要点。

这是一种完全合法的操作方式-函数内部的变量(只要它们以var开头)就在函数本地 这被称为模块模式 ,它已经被广泛接受。

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

这个

这是一篇关于这样做的好处的文章。

使其成为全局功能不是答案。 你为什么不这样做呢? 这将x排除在全局名称空间之外。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM