【问题标题】:javascript switch/case : are types compared? [duplicate]javascript switch/case:类型比较? [复制]
【发布时间】:2012-06-16 15:50:38
【问题描述】:

可能重复:
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
{
    [...]
}

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

【问题讨论】:

  • 您可以轻松测试它...
  • 是的,输入 jsfiddle 比输入问题花费的时间更少 :-)
  • @amnotiam。你是怎么找到他们的...?你以前见过吗?
  • @gdoron:不,只是this search。这是第一个结果。 :)
  • @amnotiam,但是这样你就不会获得声誉...:)

标签: javascript


【解决方案1】:

是的,比较类型。

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

ECMA-262,第 95 页。

【讨论】:

    【解决方案2】:

    它也检查类型,

    例子:

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

    Live DEMO

    正如规范所说:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多