我的代码就是这样:
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?
}
或者我错过了其他什么?
答案 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";
}