javascript - 为什么在这个例子中 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 不应该给我们“严格”而不是“不严格”吗?
解决方案
在您的第二个版本中,您break
在第一个case 0:
. 所以它继续下一个案例而不执行它的测试。然后该break
语句阻止它执行第二个case 0:
.
推荐阅读
- android - 考虑到 pdu 已创建为字符串时,如何从 pdu 对象创建 SmsMessage 尤其是在使用 WorkManager InputData 时
- python - 计算面板数据的历史平均值
- java - 如何在更改方法中使用用户选择
- python - 了解上下文中透视变换到目标点的输出?
- typescript - 导入时自动实例化 NativeScript 插件?
- c# - C# HttpClient 在字典字符串/对象中使用 FormUrlEncodedContent 对象发布内容
- sql-server - 测量 c# 应用程序的数据使用情况
- javascript - 在 ONCLICK 事件上调用函数
- r - 如何下载和/或提取存储在 R 中响应对象内的“原始”二进制 zip 对象中的数据?
- c# - 如何将焦点从按钮上移到表单上?