1. ホーム
  2. javascript

[解決済み] JavaScriptのswitch文で厳密な比較を仮定するのは安全ですか?

2022-05-15 11:05:45

質問

ブール値の変数があります。 false または整数(0を含む)です。これをswitch文の中に入れたいのですが、以下のような感じです。

switch(my_var){
    case 0:
         // Do something
         break;
    case 1:
         // Do something else
         break;
    case false:
         // Some other code
}

Google Chromeでのテストでは、完全に動作しているようですが、ブラウザによっては、もし my_varfalse である場合、最初のケースを実行する可能性があります。 0 == false .

JavaScriptでswitch文が厳密な比較を使用するという公式のものがあるかどうか気になるところです。 0 !== false というような厳密な比較を行うという公式なものがあるのかどうか気になるところですが、自分では何も見つけられませんし、これが異なる JavaScript エンジンでうまく動作するのかどうかもわかりません。switchステートメントによって行われる比較が厳密であることが保証されているかどうか、誰か知っていますか?

どのように解決するのですか?

を見てみましょう。 ECMA 262, 12.11 節 の、2番目のアルゴリズムである4.cをご覧ください。

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