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

はい、タイプが比較されます。

入力が===演算子で定義されたclauseSelectorと等しい場合は、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;
}​

ライブデモ

そして仕様が言うように:

入力が===演算子で定義されたclauseSelectorと等しい場合、...

于 2012-06-13T16:19:51.520 に答える