我刚接触JavaScript,对于在函数中访问变量的最佳实践有一个简单(我认为是简单)的问题:
什么时候应该声明全局变量,而不是将值简单地传递到函数中呢?
我刚接触JavaScript,对于在函数中访问变量的最佳实践有一个简单(我认为是简单)的问题:
什么时候应该声明全局变量,而不是将值简单地传递到函数中呢?
声明全局变量只应该作为最后的选择。
全局变量一般来说都是不好的,特别是在javascript中。没有办法防止其他javascript代码覆盖你的全局变量。这种覆盖会发生在静默的情况下并导致运行时错误。
以下是一个例子:
// Your code
myParam = { prop: 42 };
function operateOnMyParam() {
console.log(myParam.prop);
}
我在这里声明了两个全局变量:
当你在测试 JavaScript 时,这可能会很好地运行。然而,如果一个用户将你的 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();
var
声明的变量都将是全局变量。 - user113716