Ist es sicher, in einer JavaScript-switch-Anweisung einen strengen Vergleich anzunehmen?


105

Ich habe eine Variable, die entweder boolesch falseoder eine ganze Zahl (einschließlich 0) sein kann. Ich möchte es in eine switch-Anweisung einfügen wie:

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

In meinen Tests in Google Chrome, so scheint es perfekt zu arbeiten, aber ich bin ein wenig nervös , es zu benutzen , weil ich , dass in einigen Browsern Angst habe, wenn my_varist false, könnte es den ersten Fall ausführen da 0 == false.

Ich frage mich nur, ob es irgendetwas Offizielles in JavaScript gibt, das besagt, dass die switch-Anweisung einen strengen Vergleich verwendet 0 !== false, aber ich kann selbst nichts finden, und ich bin mir nicht sicher, ob dies in verschiedenen JavaScript-Engines gut funktioniert. Weiß jemand, ob der Vergleich durch eine switch-Anweisung garantiert streng ist?

Antworten:



34

http://qfox.nl/notes/110 beantwortet Ihre Frage. (Dieser Typ weiß viel über das Wesentliche von JavaScript)

Schalter in Javascript verwenden eine strikte Typprüfung (===). Sie müssen sich also nie um Zwang sorgen, was ein paar WTFJs verhindert :). Wenn Sie andererseits mit Zwang rechnen, haben Sie Pech, weil Sie ihn nicht erzwingen können.


jsfiddle.net/to469fLm/4 , Sie könnten die Zwangsfunktion verallgemeinern, um Ihre Bedürfnisse zu erfüllen
darethas

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.