我有一个变量,可以是布尔false
,也可以是整数(包括0)。我想把它放在一个开关语句中,如:
switch(my_var){
case 0:
// Do something
break;
case 1:
// Do something else
break;
case false:
// Some other code
}
在我的Google Chrome测试中,它看起来效果很好,但我使用它有点紧张,因为我担心在某些浏览器中,如果my_var
是false
,那么可能会执行0 == false
以来的第一个案例。
我只是想知道JavaScript中是否有任何官方说切换语句将使用0 !== false
这样的严格比较,但我自己找不到任何东西,我不确定这是否会在不同的JavaScript引擎中运行良好。有人知道switch语句完成的比较是否保证是严格的吗?
答案 0 :(得分:93)
查看ECMA 262, section 12.11,第二个算法,4.c。
℃。如果输入等于===运算符定义的clauseSelector,那么......
答案 1 :(得分:31)
http://qfox.nl/notes/110回答了您的问题。 (这家伙知道很多关于JavaScript的细节)
Javascript中的切换使用严格类型检查(===)。所以你永远不会 不得不担心强制,这可以防止一些wtfjs :)。如果在 另一方面你指望强制,运气不好,因为你不能 强迫它。
答案 2 :(得分:0)
是的,switch
“ [使用]严格的比较,===
”。