全局变量与将值传递给函数?

Nat*_*hur 3 javascript variables

我是JavaScript的新手,并且有一个关于访问函数中变量的最佳实践的简单(我推测)问题:

什么时候应该声明一个全局变量,而不是简单地将值传递给函数?

Jar*_*Par 5

声明全局变量应仅用作最后的选项.

全局变量一般都很糟糕,特别是在javascript中.根本没有办法阻止另一段javascript破坏你的全局.clobbering将无声地发生并导致运行时错误.

以下面的例子为例.

// Your code
myParam = { prop: 42 };
function operateOnMyParam() {
  console.log(myParam.prop);
}
Run Code Online (Sandbox Code Playgroud)

在这里,我宣布了2个全局变量

  • myParam
  • operateOnMyParam

这可能在单独测试您的javascript时工作正常.但是,如果在测试用户之后将您的javascript库与我的javascript库(恰好具有以下定义)相结合,会发生什么

// My code
function myParam() {
  console.log("...");
} 
Run Code Online (Sandbox Code Playgroud)

这也定义了一个名为myParam的全局值,它与myParam冲突.哪一个获胜取决于脚本的导入顺序.但无论哪种方式,我们中的一个人都遇到麻烦,因为我们的一个全球物体已经死了