如何使用if / else语句更改全局变量

时间:2016-11-29 13:23:10

标签: javascript

我有这段代码,如果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'

3 个答案:

答案 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在您的函数范围内未定义