[英]What is the use of passing global variables to functions through arguments in 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.