[英]Global variables vs. passing a value into a function?
我是JavaScript的新手,并且有一个关于访问函数中变量的最佳实践的简单(我推测)问题:
什么时候应该声明一个全局变量,而不是简单地将值传递给函数?
声明全局变量应仅用作最后的选项。
全局变量一般都很糟糕,特别是在javascript中。 根本没有办法阻止另一段javascript破坏你的全局。 clobbering将无声地发生并导致运行时错误。
以下面的例子为例。
// Your code
myParam = { prop: 42 };
function operateOnMyParam() {
console.log(myParam.prop);
}
在这里,我宣布了2个全局变量
这可能在单独测试您的javascript时工作正常。 但是,如果在测试用户之后将您的javascript库与我的javascript库(恰好具有以下定义)相结合,会发生什么
// My code
function myParam() {
console.log("...");
}
这也定义了一个名为myParam的全局值,它与myParam冲突。 哪一个获胜取决于脚本的导入顺序。 但无论哪种方式,我们中的一个人都遇到麻烦,因为我们的一个全球物体已经死了
有许多原因......但是一个简单的原因是..函数的参数只存在于函数中,而它正在运行。 全局变量始终存在,这意味着:
简而言之:因为函数参数只存在很短的时间并且不存在于函数之外,所以更容易理解正在发生的事情,并且大大降低了错误的风险。
在处理无框架JavaScript时,我会将我的简单变量和函数存储在对象文字中,以免混淆全局命名空间。
var myObject = {
variableA : "Foo",
variableB : "Bar",
functionA : function(){
//do something
//access local variables
this.variableA
}
}
//call functions and variables
myObject.variableA;
myObject.functionA();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.