2012-02-08 12 views
7

Diciamo che ho il seguente oggetto:Javascript proprietà dell'oggetto cita

var VariableName = { 
    firstProperty: 1, 
    secondProperty: 2 
} 

Devo avvolgere le proprietà degli oggetti tra virgolette come questo?

Questa è la Single quotes in JavaScript object literal la risposta corretta?

+2

Può essere interessante notare che mentre le virgolette * possono * essere omesse dai nomi quando si utilizza la notazione letterale dell'oggetto, la specifica JSON ** richiede ** nomi di chiavi ** ** ** quotati. – Matt

risposta

21

No, non è necessario.

Gli unici motivi per citare oggettuali chiavi sono

  • il nome della proprietà è riservata/utilizzato dal browser/motore js (ad es. "Classe" in IE)
  • avete caratteri speciali o bianco spazi nella vostra chiave

così per esempio

var VariableName = { 
    "some-prop": 42, // needs quotation because of `-` 
    "class": 'foobar' // doesn't syntatically require quotes, but it will fail on some IEs 
    valid: 'yay' // no quotes required 
}; 
+3

Questa risposta non è veramente accurata. Non spiega cosa siano esattamente quei "caratteri speciali" (e non si collega a una tale spiegazione), e menziona solo il comportamento ES3 dove le parole riservate non possono essere usate come nomi di proprietà non quotate - in ES5 questo è permesso. Vedi la mia risposta su una domanda doppia qui: http://stackoverflow.com/a/9568622/96656 –

1

Per Javascript di solito non è necessario utilizzare le virgolette. È possibile utilizzare ' o " se lo si desidera ed è necessario utilizzare le virgolette se c'è uno scontro tra il nome della proprietà e una parola riservata JS come null. La risposta a cui ti sei collegato sembra essere corretta, sì.

Per JSON, you should use " around strings (nomi tra cui proprietà oggetto)

4

nomi delle proprietà in letterali oggetto devono essere stringhe, numeri o gli identificatori. Se il nome è un identificatore valido, non hai bisogno di virgolette, altrimenti seguono le stesse regole delle stringhe.

firstProperty e secondProperty sono entrambi identificatori validi, quindi non sono necessarie le virgolette.

Vedere pagina 65 di the specification per ulteriori dettagli.

4

è sufficiente utilizzare il virgolette intorno alla proprietà, se il nome della proprietà è una parola riservata (come for, in, function, ...). In questo modo si impedisce a Javascript di tentare di interpretare la parola chiave come parte della lingua e molto probabilmente si verifica un errore di sintassi. Inoltre, se si desidera utilizzare spazi nei nomi di proprietà, è necessario utilizzare anche le virgolette. Se i nomi delle tue proprietà sono solo nomi normali senza potenziale collusivo o spazi, puoi usare la sintassi che preferisci.

Un'altra possibilità che richiede virgolette è l'uso di minifigure Javascript come il compilatore di chiusura di google, poiché tende a sostituire tutti i nomi di proprietà. Se si inseriscono i nomi delle proprietà tra virgolette, tuttavia, il compilatore di chiusura conserva la proprietà come lo ha codificato. Ciò ha una certa rilevanza quando si esportano oggetti in una libreria o si utilizza un oggetto parametro.

Problemi correlati