我有这段代码,如果var n
不是var thisRoll
,我想更改'green'
,但我只会在undefined
的输出中获得console.log(n)
var thisRoll = 'red'
var n;
var base_bet = 1;
function betInput(thisRoll, n) {
var x;
if (thisRoll === 'green') {
x = base_bet;
n = 0;
} else {
n = n + 1;
}
return x;
}
var X = betInput(thisRoll);
console.log(X);
console.log(n);
当1
不是thisRoll
时,是否应该添加'green'
?
答案 0 :(得分:5)
因为您的UIApplication
也是函数中的参数。因此,它会隐藏n
中的外部变量n
,当您访问function
时,它会引用n
。要使用全局parameter variable
,您需要删除参数,或更改其名称。
n
答案 1 :(得分:1)
函数betInput(thisRoll, n)
包含参数n
,阴影全局变量n
。使用betInput(thisRoll)
调用该函数只会将本地n
设置为默认值。
(Javascript在这方面很松懈 - 以及许多其他事情 - 确实难以用该语言编写稳定的代码。)
只需从功能参数列表中删除n
,一切顺利。
答案 2 :(得分:0)
删除函数中的参数。那里有n
,这使它成为函数的范围。
function betInput(thisRoll, n) {
//------------------------^^^
将您的功能更改为:
function betInput(thisRoll) {
这样,n
将引用您的全局变量,否则n
在您的函数范围内未定义