繁体   English   中英

JavaScript:正确的switch-case语句

[英]JavaScript: right switch-case statement

我的代码是这样的:

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?
}

或者我错过了一些其他的?

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

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

如果你没有return语句或其他任何终止当前块或跳出它的东西(比如在循环中continue ), 那么通常想要在每个case块的break和结束时防止穿透,但是实际上是你想要通过的案例。

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

不,如果从默认情况返回,则不需要break语句。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM