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

Is it safe to assume strict comparison in a JavaScript switch statement?

本文关键字:比较 是否 安全 switch JavaScript 语句      更新时间:2023-09-26

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

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

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

我只是想知道是否有任何官方的JavaScript,说开关语句将使用严格的比较,如0 !== false,但我自己找不到任何东西,我不确定这是否会在不同的JavaScript引擎工作得很好。有人知道switch语句所做的比较是否保证严格吗?

查看ECMA 262,第12.11节,第二种算法,4.c.

c。如果input等于===操作符定义的clauseSelector,则…

http://qfox。/注释/110回答你的问题。(这家伙知道很多关于JavaScript的细节)

Javascript中的开关使用严格的类型检查(===)。所以你永远不会不得不担心强制,这阻止了一些WTFJS:)。如果在另一方面,你指望着胁迫,运气不好,因为你不能力。

是的,switch "[使用]严格比较,=== ".

来源:switch - JavaScript | MDN