9

可能重复:
在 Javascript switch 语句中假设严格比较是否安全?

javascript 中的 switch/case 语句是比较类型还是只比较值?

换句话说,当我有以下代码时:

switch (variable)
{
    case "0": [...] break;
    case "1": [...] break;
    default: [...] break;
}

是否等同于

if ( variable == "0" )
{
    [...]
}
else if ( variable == "1" )
{
    [...]
}
else
{
    [...]
}

或者

if ( variable === "0" )
{
    [...]
}
else if ( variable === "1" )
{
    [...]
}
else
{
    [...]
}

编辑:有没有办法一次强制比较值和类型?

4

2 回答 2

12

是的,类型是比较的。

如果输入等于 === 运算符定义的子句选择器,则将 found 设置为 true。

ECMA-262,第 95 页。

于 2012-06-13T16:21:45.030 回答
1

它也检查类型,

例子:

var x = false;

switch (x) {
case "":
    alert('x'); /// Not happening
    break;
case false:
    alert('y');  // happen
    break;
}​

现场演示

正如规范所说:

如果输入等于 === 运算符定义的子句选择器,则...

于 2012-06-13T16:19:51.520 回答