我是JavaScript的新手,并且有一个关于在函数中访问变量的最佳实践的简单(我推测)问题:
我应该何时声明一个全局变量,而不是简单地将值传递给函数?
答案 0 :(得分:5)
声明全局变量应仅用作最后的选项。
全局变量一般都很糟糕,特别是在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冲突。哪一个获胜取决于脚本的导入顺序。但无论哪种方式,我们中的一个人都遇到麻烦,因为我们的一个全球物体已经死了
答案 1 :(得分:2)
有许多原因......但是一个简单的原因是..函数的参数只存在于函数中,而它正在运行。全局变量始终存在,这意味着:
简而言之:因为函数参数只存在很短的时间并且不存在于函数之外,所以更容易理解正在发生的事情,并且大大降低了错误的风险。
答案 2 :(得分:2)
在处理无框架的JavaScript时,我会将我的简单变量和函数存储在对象文字中,以免弄乱全局命名空间。
var myObject = {
variableA : "Foo",
variableB : "Bar",
functionA : function(){
//do something
//access local variables
this.variableA
}
}
//call functions and variables
myObject.variableA;
myObject.functionA();