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

我有一个变量,它可以是布尔 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以来的第一个情况。

I'm just wondering if there is anything official in JavaScript that says the switch statement will use strict comparison such that 0 !== false, but I can't find anything myself, and I'm not sure if this will work well in different JavaScript engines. Does anybody know if the comparison done by a switch statement is guaranteed to be strict?

14480 次浏览

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

Javascript 中的开关使用严格的类型检查(= = =) 不得不担心强迫,这阻止了一些 wtfjs:) 另一方面,你指望强迫,运气不好,因为你不能 强迫它。

看看 ECMA 262章12.11节第二个算法4.c。

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

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

资料来源: switch - JavaScript | MDN