Javascript switch语句是严格比较还是通过类型转换进行比较?
答案 0 :(得分:6)
我无法相信提出这个问题要比尝试这个问题更快:
var v = "1";
switch (v) {
case 1:
alert ("No");
break;
default:
alert ("Yes");
}
在回答您的问题时,它是===
。
答案 1 :(得分:3)
它只使用严格的比较。特别是,即使没有找到严格匹配,它也永远不会退回到类型强制 - 它会立即跳到默认条款,如果有的话。来自MDN:
程序首先查找
case
子句,其表达式的计算结果与输入表达式的值相同(使用strict comparison,===
),然后将控制转移到该子句,执行相关陈述。如果未找到匹配的case
子句,程序将查找可选的default
子句...
答案 2 :(得分:0)
根据MDN 它使用严格的比较。
程序首先查找一个case子句,其表达式的计算结果与输入表达式的值相同(使用严格比较,===),然后将控制转移到该子句,执行相关的语句。