2016-11-29 68 views
1

我有這樣的代碼,我想改變var n如果var thisRoll'green',但我只得到undefined在輸出console.log(n)如何改變一個全局變量與if/else語句

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); 

不該當它加1thisRoll不是'green'

回答

5

因爲你的n也是函數中的一個參數。因此它將外部變量n隱藏在function中,當您訪問n時,它指的是parameter variable。要使用全局n,您需要刪除參數或更改其名稱。

function betInput(thisRoll) { 
    var x; 
    if (thisRoll === 'green') { 
     x = base_bet; 
     n = 0; 
    } else { 
     n = n + 1; 
    } 
    return x; 
} 
0

刪除函數中的參數。那裏有n,這使得它的作用範圍。

function betInput(thisRoll, n) { 
//------------------------^^^ 

更改功能:

function betInput(thisRoll) { 

這樣,n將引用您的全局變量,否則n在你的功能範圍不確定

1

功能betInput(thisRoll, n)包含參數n陰影全局變量n。使用betInput(thisRoll)調用該函數僅將本地n設置爲默認值。 (這個事實上,JavaScript對此很鬆懈 - 以及許多其他事情 - 確實難以在語言中編寫穩定的代碼)。

只需從函數參數列表中刪除n,一切都會好的。