在JavaScript switch语句中进行严格比较是否安全?

我有一个variables,可以是布尔false ,或整数(包括0)。 我想把它放在switch语句中,如:

 switch(my_var){ case 0: // Do something break; case 1: // Do something else break; case false: // Some other code } 

在谷歌浏览器中的testing中,它似乎完美的工作,但我有点紧张,因为我担心,在一些浏览器中,如果my_varfalse ,它可能会执行第一个情况,因为0 == false

我只是想知道是否有什么官方的JavaScript说,switch语句将使用严格的比较,这样0 !== false ,但我什么都找不到自己,我不知道这是否会工作得很好不同的JavaScript引擎。 有没有人知道switch语句所做的比较是否严格?

看看ECMA 262,第12.11节 ,第二个algorithm4.c.

C。 如果input等于===运算符定义的clauseSelector,则…

尝试一下:

 switch(1) { case '1': alert('Switch comparison is NOT strict.'); break; case 1: alert('Switch comparison is strict.'); break; default: alert('Huh?'); } 

http://qfox.nl/notes/110回答你的问题。; (这个人知道很多关于JavaScript的内容)

Javascript中的开关使用严格的types检查(===)。 所以你永远不必担心强制,这可以防止几个wtfjs :)。 另一方面,如果你指望强制,那么就算你不能强迫它,也是很难受的。