首页 > 解决方案 > 为什么在这个例子中 switch-case 严格相等检查似乎失败了?

问题描述

如果此代码的结果说明 switch-case 意味着严格的相等检查..

//code 1

switch(0)
{
case false: alert('NOT strict');
break;
case 0: alert('strict');    // shows up as expected
}

..那么为什么第二个的结果似乎相反?..是否发生了任何类型转换或什么?

// code 2

switch(0)
{
case 0: alert('may or may not be strict');    // I just added this case.. does it have an effect.. why?
case false: alert('NOT strict');    // this shows up!..
break;
case 0: alert('strict');    // ..instead of this!
}

注意1:我的问题不是是否发生严格的相等检查。我已经在这里查找了该问题的答案。我的问题是..为什么这两个结果之间存在矛盾?代码 2 不应该给我们“严格”而不是“不严格”吗?

标签: javascriptswitch-statementcase

解决方案


在您的第二个版本中,您break在第一个case 0:. 所以它继续下一个案例而不执行它的测试。然后该break语句阻止它执行第二个case 0:.


推荐阅读