javascript开关/案例:类型比较?

时间:2012-06-13 16:16:31

标签: javascript

  

可能重复:
  Is it safe to assume strict comparison in a Javascript switch statement?

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
{
    [...]
}

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

2 个答案:

答案 0 :(得分:10)

是的,比较类型。

  

如果输入等于===运算符定义的clauseSelector,   然后将发现设置为true。

ECMA-262,第95页。

答案 1 :(得分:1)

它也会检查类型,

示例:

var x = false;

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

Live DEMO

正如规范所说:

  

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