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


105

我有一个可以为boolean false或整数(包括0)的变量。我想把它放在switch语句中,例如:

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中是否有官方说switch语句将使用严格的比较,例如0 !== false,但是我自己找不到任何东西,而且我不确定这是否可以在不同的JavaScript引擎中很好地工作。有人知道switch语句所做的比较是否一定严格吗?

Answers:



34

http://qfox.nl/notes/110回答了您的问题。(这个人对JavaScript的精髓很了解)

Javascript中的开关使用严格类型检查(===)。因此,您不必担心强制转换,它可以防止一些wtfjs :)。另一方面,如果您要依靠胁迫,那么运气不好,因为您不能强迫它。


jsfiddle.net/to469fLm/4,您可以泛化强制功能以满足您的需求
darethas

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.