在JavaScript switch语句中假设严格比较是否安全?

时间:2011-08-08 23:45:39

标签: javascript types comparison type-conversion switch-statement

我有一个变量,可以是布尔false,也可以是整数(包括0)。我想把它放在一个开关语句中,如:

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

在我的Google Chrome测试中,它看起来效果很好,但我使用它有点紧张,因为我担心在某些浏览器中,如果my_varfalse,那么可能会执行0 == false以来的第一个案例。

我只是想知道JavaScript中是否有任何官方说切换语句将使用0 !== false这样的严格比较,但我自己找不到任何东西,我不确定这是否会在不同的JavaScript引擎中运行良好。有人知道switch语句完成的比较是否保证是严格的吗?

3 个答案:

答案 0 :(得分:93)

查看ECMA 262, section 12.11,第二个算法,4.c。

  

℃。如果输入等于===运算符定义的clauseSelector,那么......

答案 1 :(得分:31)

http://qfox.nl/notes/110回答了您的问题。 (这家伙知道很多关于JavaScript的细节)

  

Javascript中的切换使用严格类型检查(===)。所以你永远不会   不得不担心强制,这可以防止一些wtfjs :)。如果在   另一方面你指望强制,运气不好,因为你不能   强迫它。

答案 2 :(得分:0)

是的,switch“ [使用]严格的比较,===”。

来源:switch - JavaScript | MDN