JavaScriptのswitchステートメントで厳密な比較を想定しても安全ですか?


105

boolean 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ステートメントによって行われる比較が厳密であることが保証されているかどうか誰かが知っていますか?

回答:



34

http://qfox.nl/notes/110があなたの質問に答えます。(この人はJavaScriptの要点をよく知っています)

JavaScriptのスイッチは、厳密な型チェック(===)を使用します。したがって、強制を心配する必要はありません。これにより、いくつかのwtfjsが防止されます。一方、強制を当てにしている場合は、強制できないので、運がいいです。


jsfiddle.net/to469fLm/4、強制機能を一般化してニーズを達成できます
darethas

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.