RIY*_*HAN 1 javascript function switch-statement
我有以下代码片段.
var caseObj = function () {
}
switch (typeof caseObj) {
case "function":
console.log("it is function");
case "object":
console.log("It is object now");
}
Run Code Online (Sandbox Code Playgroud)
它的输出是
it is function.
It is object now.
Run Code Online (Sandbox Code Playgroud)
但是typeof caseObj给出输出function但它仍然评估
案例"对象"的情况.
怎么可能?我做错了吗?
编辑:
typeof caseObj给予function,所以它执行该案件,但它也执行object案件.为什么这种奇怪的行为?
问题不在于typeof,但你错过break了案件中的陈述.这将成为case同样function OR object并执行两个案件的块.
你错过break;了cases 的陈述.这就是下一次失败的原因case.
break语句终止当前的循环,开关或标签语句,并将程序控制转移到终止语句之后的语句.
var caseObj = function() {
}
switch (typeof caseObj) {
case "function":
document.write("it is function");
break;
case "object":
document.write("It is object now");
break;
}Run Code Online (Sandbox Code Playgroud)
从答案中的评论:
但如果没有匹配的情况并且从switch退出,它也会没有中断.但它执行案例"对象":法规也是如此.为什么?
来自MDN
如果找到匹配项,程序将执行关联的语句.如果多个案例与提供的值匹配,则选择匹配的第一个案例,即使案例彼此不相等也是如此.
与每个案例标签关联的可选break语句可确保程序在执行匹配语句后突破switch,并在switch后的语句处继续执行.如果省略break,程序将继续执行switch语句中的下一个语句.
| 归档时间: |
|
| 查看次数: |
344 次 |
| 最近记录: |