2016-03-31 8 views
8

Provenendo da uno sfondo in lingue fortemente tipizzate, il vantaggio principale che ottengo dall'enumerazione è la cattura dell'errore in fase di compilazione.C'è qualche motivo nell'usare un tipo 'enum' invece di una stringa in Javascript?

Sto scrivendo un piccolo programma in Javascript, e mi trovo a voler qualcosa di simile a un enum, forse in questo modo:

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

Ma vedo alcun vantaggio a questo. Potrei anche usare le stringhe ovunque sia richiesto questo 'enum'.

Devo usare solo stringhe in javascript al posto di tipi enum in altre lingue?

+2

Potresti essere interessato a: http://stijndewitt.com/2014/01/26/enums-in-javascript/. Le enumerazioni possono essere utili! – Tacocat

+6

Puoi fare cose come 'if (input in Fruit)' senza dover scrivere l'elenco di tutti i frutti ogni volta. – Barmar

+1

le stringhe magiche sono cattive –

risposta

1

È un buon modo per estrarre elementi comuni come numeri magici/stringhe o simili. Immagina di avere BANANA dappertutto, quindi per qualche motivo devi cambiare BANANA a SOMETHING_ELSE, senza approccio che utilizzi in questione è necessario apportare una modifica in ogni singolo luogo.

var foo = { 
    bar: "baz" 
} 

Quindi, utilizzando foo.bar invece di stringa hardcoded "baz" tutto il luogo, può salvare il vostro tempo e possibili errori, quando si tratta di cambiare "baz" a qualcos'altro.

+1

Questo argomento non ha molto senso alla luce delle enumerazioni. Invece di cambiare '" BANANA "' a '" SOMETHING_ELSE "' ovunque, dovremmo cambiare 'Fruit.BANANA' in' Fruit.SOMETHING_ELSE' ovunque? – Bergi

+0

Sono d'accordo, e in un linguaggio fortemente tipizzato questo mi avvantaggia proteggendomi dagli errori di battitura e assegnando tipi errati. Ma in una lingua come Java, non ho nessuna di queste due cose. Tuttavia, riconosco che l'estrazione di numeri magici e stringhe aiuta nella documentazione. – jrahhali

Problemi correlati