你应该理解上的差异,然后为自己选择。
基本上,你有两个模式:
x作为全局变量:
var x = 1;
var f = function() {
console.log('x in f:', x);
x = 2;
}
console.log('x before f:', x);
f();
console.log('x after f:', x);
和x作为参数:
var x = 1;
var f = function(x) {
console.log('x in f:', x);
x = 2;
}
console.log('x before f:', x);
f(x);
console.log('x after f:', x);
有两个主要区别:
如果f
使用全局变量,它会修改全局变量,而如果用一个参数的作品,它不会影响任何变量的外部可见,即第一码写入x after f: 2
,而第二写入
如果f
使用全局变量,那么将不同的值传递给它会变得不太方便。有了一个参数,你甚至不需要一个全局变量,你可以调用f(1); f(2); f(3456);
。使用全球变量,您可以完成与var x=1; f(); x=2; f(); x=3456; f();
相同的操作。
而不是去到更多的细节,我给你一个链接:Why are global variables evil?
不管怎样,有些时候全局变量都不错!我会为一个恒定的值使用多个函数(var GRAVITY = 9.81;
或var BASE_URL = "https://stackoverflow.com/";
)
您应该更喜欢'var rollDie = function(userInput){',但是,您的情况userInput是一个全局变量,因此,即使您未通过参数,它也会得到值 – nikhil
。先生,如果你不介意,你可以解释一下为什么不用参数写作它的作品?是因为userInput在函数外是真的,所以这是为什么? – user3152131
它现在可以工作,因为'userInput'也是全局变量。 – dfsq