感谢您花时间审核此问题。我一直试图解决一两个小时的问题而没有成功......
我有一个网页,根据函数的响应设置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的知识。
答案 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;
或者只是到达功能代码块的末尾而不会遇到返回。