2015-10-17 51 views
0

我想用javascript創建一個記分板。我創建了一個全局變量,即NaN。我還創建了一個帶有if語句的函數。如果變量是NaN,那麼該變量需要爲0.該變量將得到+1。當我點擊按鈕來運行該功能時,結果爲1.但是,當我重新點擊按鈕並重新運行該功能時,它保持爲1並且不會添加+1。有人可以告訴我我做錯了什麼嗎?函數不會記住變量

var score = score; //creates a global variable 
function addscore(score) { 
    alert(score); // just for me to see what value the variable has 
    if ((score) = isNaN) { 
     var score = 0; // the variable will be a number 
    } 
    score++; 
    alert(score); 
} 
+2

'var score = score; //創建一個全局變量'--- o_O – zerkms

+2

'var score = score' Plot twist:這*不*創建一個全局變量。 –

回答

2

通過使score成爲函數的一個參數,您聲明瞭一個局部變量。你的函數使用這個局部變量而不是全局變量,所以你每次調用它時都要傳遞一個值。

單從函數聲明刪除score

function addscore() { 

此外,該行就沒有意義了:

​​

你不能設置scorescore因爲score不存在然而!只要這樣做:

var score = 0; 

if ((score) = NaN) {將爲得分賦值。你想檢查這些值,如if (isNaN(score)) {

+1

我也改變了var score = 0;得分= 0;在if語句中,它使函數起作用。 – gloo

+0

@gloo是的,我錯過了那一個。很高興幫助! –

+0

但在JavaScript中,NaN!== NaN。您需要使用全局isNaN()函數來檢查NaN。 – simonlchilds

0

function addscore是你痛苦的原因。您在其中添加了變量score,if條件將引用該變量而不是全局變量。去掉它。你的函數定義應該看起來像財產以後下面

function addscore() { 
.... 
.... 
} 

也比較你如果病症使用==代替=,這是任務。

行更改

var score = score; //creates a global variable 

喜歡的東西

var score = 0; //creates a global variable 

的得分不存在作爲呢。