繁体   English   中英

在JavaScript中使用全局变量的最合理的方法是什么?

[英]What is the sanest way to use global variables in Javascript?

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

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

从长远来看,我将如何避免冲突?

我亲自为应用程序数据定义了名称空间

var myns = {};

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

myns.foo = 50;

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

恕我直言,避免冲突的最佳方法是在临时范围内工作,使用自执行函数表达式,将所有库代码封装起来,并以非常有选择性的方式公开全局对象,并使用尽可能少的代码:

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

默认情况下,在函数外部声明的任何内容都是全局的。 您无需明确地将其附加到文档即可。 从长远来看,您应该避免冲突,这就是为什么这是一种不好的做法。

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

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

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

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

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

myAPI.doSomethingPublic();

我同意以上评论。 我通常创建一个对象 ,隐藏数据,并根据需要公开(很少)获取器和行为。

暂无
暂无

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

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