[英]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.