javascript开关/大小写:是否比较了类型?

javascript开关/大小写:是否比较了类型?,javascript,Javascript,可能重复: javascript中的switch/case语句是比较类型还是只比较值 换句话说,当我有以下代码时: switch (variable) { case "0": [...] break; case "1": [...] break; default: [...] break; } 相当于 if ( variable == "0" ) { [...] } else if ( variable == "1" ) { [...] } else

可能重复:

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

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

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

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


编辑:是否有一种方法可以强制同时比较值和类型?

它还检查类型

例如:

var x = false;

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

正如规范所说:

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


是的,类型是比较的

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


,第95页。

您可以轻松地测试它……是的,输入JSFIDLE比输入问题:-)@amnotiam所花费的时间要少。你怎么找到他们。。。?你以前看过吗?@gdoron:没有,刚刚看过。这是第一个结果。:)@amnotiam,但这样你就没有名声了<代码>:)
var x = false;

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