2011-09-24 40 views
2

感謝您花時間回顧此問題。我一直在試圖解決一個問題,但沒有成功一兩個小時......強制JavaScript返回false以通過函數持續

我有一個網頁,其基於從一個函數的響應JavaScript變量:

grade = getScore(questionAnswer, userAnswer, questionType); 

( userAnswer是用戶的問題的答案,並從一個文本檢索)

這裏是getScore:

function getScore(questionAnswer, userAnswer, questionType) { 

    switch(questionType) { 
     case 'multiplechoice': 
      return scoreMC(questionAnswer, userAnswer); 
     break; 

     case 'usertypesanswer': 
      return scoreTA(questionAnswer, userAnswer);   
     break; 

     default: 
      return 0 
    } 

} 

爲scoreMC和scoreTA功能已經被徹底的測試, d工作很好。問題是,如果用戶的答案格式不正確,scoreMC或scoreTA將返回false。否則它返回值分數和味精。然而,當我根據getScore函數設置等級變量的值時,我沒有得到「等級」的「假」值,而是得到「未定義」。 (我們沒有問題,當用戶響應驗證正確。)

設置「級」後,我試圖以檢查是否有任何部分是不確定的:

if(typeof(grade.score) !== undefined) 

我不明白爲什麼,但即使當我在我的Firebug控制檯中看到「undefined」時,grade.score也會通過此檢查...

有人看到我在做什麼錯嗎?非常感謝你的協助。我有很多需要了解的JavaScript。

+0

你有沒有試過'typeof' –

回答

3
if(typeof(grade.score) !== undefined) 

可以

if(grade.score && grade.score !== false) // if I understand your question 

if(typeof(grade.score) !== "undefined") 

typeof返回一個字符串

+1

+1我打字的時候分心了,你先到這裏 –

+1

+1非常感謝!我知道它必須簡單。 :)我用「如果(grade.score && grade.score!== false)」,正如你所建議的那樣,它工作。 – Alex

0

如果沒有使用return語句(或沒有值的空返),JavaScript的回報未定義。

幾乎可以肯定的是你的分數函數(scoreMC,scoreTA,其代碼你應該已經包含在問題)不即

return; 

還是隻返回一個值達到功能結束代碼塊沒有遇到回報。