在Javascript中使用全局变量的最佳方法是什么?

时间:2010-01-05 15:25:04

标签: javascript html

在Javascript中使用全局变量的最佳方法是什么?

我应该document.x="this"document.y="that"吗?

从长远来看,我如何避免碰撞?

5 个答案:

答案 0 :(得分:19)

我个人为我的应用程序数据定义了命名空间

var myns = {};

并定义该命名空间内的所有内容

myns.foo = 50;

从这个意义上讲,您附加到全局对象的唯一变量是命名空间对象。其他所有内容都可以全局访问,但在您的命名空间内。这样可以减少全局对象上的冲突,最终可以根据需要定义不同的命名空间。

答案 1 :(得分:8)

恕我直言,避免冲突的最佳方法是使用自动执行的函数表达式处理临时范围,保留所有库代码,并以非常选择性公开全局对象方式,尽量少用:

(function(){
  var myLib = window.myLib = function(){ // expose object
    // Initialize
  };
  // ...
})();

答案 2 :(得分:3)

在函数外声明的任何内容,默认情况下都是全局的。您不需要明确地将其附加到文档中以实现它。从长远来看,你可以避免碰撞,这就是为什么这是一个糟糕的做法。

您可以编写面向对象的JS并将变量保存在一个名称空间中,或多或少。

答案 3 :(得分:0)

正如其他答案所指出的那样,将代码放在函数中可以防止它被全局访问。您还可以使用函数的返回值来仅显示所需的变量:

var myAPI = (function() {
    var examplePrivateVariable = 1;
    var examplePublicVariable = 1;

    function doSomethingPublic() { /*...*/ }
    function doSomethingPrivate() { /*...*/ }

    return {
        examplePrivateVariable: examplePrivateVariable,
        doSomethingPublic: doSomethingPublic
    };
})();

myAPI.doSomethingPublic();

答案 4 :(得分:0)

我同意上述评论。我通常create an object,隐藏数据,并根据需要公开getter(很少)和行为。