【问题标题】:Forcing JavaScript return false to persist through functions强制 JavaScript 返回 false 以通过函数持续存在
【发布时间】:2011-11-24 01:31:13
【问题描述】:

感谢您抽出宝贵时间查看此问题。我一直试图解决一个问题一两个小时,但没有成功......

我有一个基于函数响应设置 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 的函数已经过彻底测试并且运行良好。问题是如果用户的答案格式不正确, scoreMC 或 scoreTA 将返回 false。否则它返回值分数和味精。但是,当我根据 getScore 函数设置等级变量的值时,我没有得到“等级”的“假”值,而是得到“未定义”。 (当用户响应正确验证时,我们没有问题。)

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

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

我不明白为什么,但即使我在 Firebug 控制台中看到“未定义”,grade.score 还是通过了这个检查...

有人看到我做错了吗?非常感谢你的协助。关于 JavaScript,我还有很多东西要学。

【问题讨论】:

  • 你试过没有typeof

标签: javascript return undefined


【解决方案1】:
if(typeof(grade.score) !== undefined)

可以

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

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

typeof 返回一个字符串

【讨论】:

  • +1 非常感谢!我知道它必须很简单。 :) 我按照你的建议使用了“if(grade.score && grade.score !== false)”,它奏效了。
【解决方案2】:

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

几乎可以肯定,您的其中一个评分函数(scoreMC、scoreTA,您应该在问题中包含其代码)没有返回值,即

return;

或者只是到达函数代码块的末尾而没有遇到返回。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多