2016-03-31 4 views
8

Aus einem Hintergrund in stark typisierten Sprachen kommend, ist der Hauptvorteil, den ich von enums bekomme, das Kompilieren von Fehlern.Ist es sinnvoll, in Javascript einen 'enum' -Typ anstelle einer Zeichenkette zu verwenden?

Ich bin ein kleines Programm in Javascript zu schreiben, und ich finde ich so etwas wie ein Enum will, vielleicht so:

var Fruit = { 
    BANANA: "BANANA", 
    APPLE: "APPLE", 
    PEAR: "PEAR"; 
}; 

Aber ich sehe keinen Vorteil dabei. Ich könnte genauso gut Saiten überall dort verwenden, wo diese 'Enum' benötigt wird.

Sollte ich nur Strings in Javascript anstelle von Enum-Typen in anderen Sprachen verwenden?

+2

Das könnte Sie interessieren: http://stijndewitt.com/2014/01/26/enums-in-javascript/. Enums können nützlich sein! – Tacocat

+6

Sie können Dinge wie 'if (Eingabe in Obst)' tun, ohne jedes Mal die Liste aller Früchte ausschreiben zu müssen. – Barmar

+1

magische Saiten sind schlecht –

Antwort

1

Es ist ein guter Weg, um allgemeine Dinge wie magische Zahlen/Strings oder ähnliches zu extrahieren. Stellen Sie sich vor, dass Sie BANANA überall haben, dann aus irgendeinem Grund müssen Sie BANANA zu SOMETHING_ELSE ändern, ohne Ansatz, den Sie in Frage verwenden, müssen Sie eine Änderung an jedem einzelnen Ort vornehmen.

var foo = { 
    bar: "baz" 
} 

So foo.bar statt hartcodierte Zeichenfolge mit "baz" ganz über den Platz, können Sie Ihre Zeit und mögliche Fehler speichern, wenn es "baz" zu etwas zu ändern anderen kommt.

+1

Dieses Argument macht angesichts von enums keinen großen Sinn. Anstatt "BANANA" 'auf' 'SOMETHING_ELSE' 'überall zu ändern, müssten wir' Fruit.BANANA' auf 'Fruit.SOMETHING_ELSE' umstellen? – Bergi

+0

Ich stimme zu, und in einer stark typisierten Sprache kommt mir das zugute, indem ich mich vor Tippfehlern schütze und falsche Typen zuweise. Aber in einer Sprache wie Java bekomme ich keines dieser beiden Dinge. Ich erkenne jedoch, dass das Extrahieren von magischen Zahlen und Zeichenfolgen in der Dokumentation hilft. – jrahhali

Verwandte Themen