Pau*_*aul 99 javascript comparison types type-conversion switch-statement
我有一个变量,可以是布尔值false,也可以是整数(包括0).我想把它放在一个switch语句中:
switch(my_var){
case 0:
// Do something
break;
case 1:
// Do something else
break;
case false:
// Some other code
}
Run Code Online (Sandbox Code Playgroud)
在谷歌浏览器的测试中,它似乎工作得很好,但我使用它有点紧张,因为我害怕在某些浏览器中,如果my_var是false,它可能会执行第一种情况0 == false.
我只是想知道JavaScript中是否有任何官方说切换语句将使用严格的比较0 !== false,但我自己找不到任何东西,而且我不确定这是否适用于不同的JavaScript引擎.有人知道switch语句完成的比较是否保证是严格的吗?
Fed*_*rón 96
看看ECMA 262,第12.11节,第二个算法,4.c.
C.如果输入等于===运算符定义的clauseSelector,则...
Hal*_*yon 33
http://qfox.nl/notes/110回答你的问题.(这家伙知道很多关于JavaScript的细节)
Javascript中的开关使用严格类型检查(===).所以你永远不必担心强制,这可以防止一些wtfjs :).另一方面,如果你指望强制,运气不好,因为你不能强迫它.