强制JavaScript返回false以通过函数持久化

时间:2011-09-24 00:14:58

标签: javascript return undefined

感谢您花时间审核此问题。我一直试图解决一两个小时的问题而没有成功......

我有一个网页,根据函数的响应设置JavaScript变量:

grade = getScore(questionAnswer, userAnswer, questionType);

(userAnswer是用户对问题的回答,是从textarea中检索的)

这是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的功能已经过彻底测试,效果很好。问题是如果用户的答案格式不正确,则scoreMC或scoreTA将返回false。否则返回值得分和消息。但是,当我根据getScore函数设置等级变量的值时,不会获得“等级”的“假”值,而是“未定义”。 (当用户响应正确验证时,我们没有问题。)

设置“等级”后,我试图检查它的任何部分是否未定义:

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

我不明白为什么,但即使我在Firebug控制台中看到“未定义”,grade.score也会通过此检查......

有谁看到我做错了什么?非常感谢你的协助。我有很多关于JavaScript的知识。

2 个答案:

答案 0 :(得分:3)

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

可以

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

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

typeof返回一个字符串

答案 1 :(得分:0)

如果没有使用return语句(或没有值的空返回),则JavaScript返回undefined。

几乎可以肯定,你的一个得分函数(scoreMC,scoreTA,你应该在问题中包含的代码)不会返回一个值,即

return;

或者只是到达功能代码块的末尾而不会遇到返回。