JavaScript:正确的switch-case语句

时间:2015-04-16 06:58:58

标签: javascript

我的代码就是这样:

switch(typeof src) {
    case 'string':
    case 'boolean':
        return String(src).toLowerCase().indexOf(value.toLowerCase()) > -1;
    case 'object':
        return true;
    default:
        return false;
}

但代码检查员说:n unconditional "break" statement shall terminate every non-empty switch-clause

如果我这样写它会是正确和正常的吗?

switch(typeof src) {
    case 'string':
    case 'boolean':
        return String(src).toLowerCase().indexOf(value.toLowerCase()) > -1;
        break;
    case 'object':
        return true;
        break;
    default:
        return false;
        // in default i need it or not?
}

或者我错过了其他什么?

3 个答案:

答案 0 :(得分:3)

您的代码检查器错误,因为return终止了switch语句所在的整个函数。
return之后的任何事情(就像它希望你放在那里的break一样)将无法访问并且永远不会被执行。

这是否美观或良好的做法是值得商榷的,但我会说没关系。

如果您没有return语句或其他任何终止当前阻止或跳出其中的内容(例如循环中的continue), < strong>通常希望放置break和每个case块的结尾以防止出现问题,但实际上有些情况需要通过。

所以你的代码检查器真的更像是一个意见检查器。

答案 1 :(得分:0)

不,如果从默认情况下返回,则无需使用break语句。

您必须为您要操作的所有案例添加break语句并停止开关的工作,否则默认操作从函数返回。

答案 2 :(得分:0)

Stoyan Stefanov从“JavaScript模式”切换模式。

 var inspect_me = 0,
     result = '';
 switch (inspect_me) {
     case 0:
         result = "zero";
         break;
     case 1:
         result = "one";
         break;
     default:
         result = "unknown";
 }