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

标签 javascript types comparison type-conversion switch-statement

我有一个变量,它可以是 bool 值 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 以来的第一个 case。

我只是想知道 JavaScript 中是否有任何官方说明 switch 语句将使用严格比较使得 0 !== false,但我自己找不到任何东西,而且我我不确定这是否适用于不同的 JavaScript 引擎。有谁知道 switch 语句所做的比较是否保证是严格的?

最佳答案

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

c. If input is equal to clauseSelector as defined by the === operator, then...

关于javascript - 在 JavaScript switch 语句中假设严格比较是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6989902/

相关文章:

java - 对可能包含数字的字符串进行排序

database - 两个不同的数据库(数据从一个复制到另一个)并比较它们的数据

javascript - 在 JavaScript 和 JSON 中传递 Google 脚本值

javascript - 如何使用 javascript 和 ActiveX 打开、修改和保存文件?

types - 常数 1 被截断为整数?

c++ - 为什么在 C++ 中我们使用 DWORD 而不是 unsigned int?

javascript - React Native 图像插入和字符串

javascript - 获取可拖动元素的 ID

c++ - 为什么 C++ 允许但忽略将 const 应用于函数类型?

c# - Outlook.MailItem - 有什么方法可以确定两个邮件项目(发送给不同的收件人)是否相同?