2012-02-08 19 views
7

powiedzmy mam następujący obiekt:JavaScript właściwość obiektu cytuje

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

mam owinąć właściwości obiektu w cudzysłowie, jak to?

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

Czy ta Single quotes in JavaScript object literal jest poprawną odpowiedzią?

+2

Warto zauważyć, że podczas gdy cytaty * mogą * być pomijane w nazwach podczas używania zapisu literalnego obiektu, specyfikacja JSON ** wymaga ** nazw kluczy do ** podwójnych ** cytowanych. – Matt

Odpowiedz

21

Nie, nie musisz tego robić.

Jedyne powody zacytować Object-klucze są

  • nazwa właściwość jest zarezerwowana/używany przez przeglądarkę/silnik js (np. „Klasa” w IE)
  • masz znaki specjalne lub biały przestrzenie w swoim kluczem

tak na przykład

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

Ta odpowiedź nie jest prawdziwa. Nie wyjaśnia, co dokładnie oznaczają te "znaki specjalne" (i nie zawiera odnośników do takiego wyjaśnienia), a jedynie wspomina zachowanie ES3, w którym słowa zastrzeżone nie mogą być używane jako niecytowane nazwy właściwości - w ES5 to jest dozwolone. Zobacz moją odpowiedź na zduplikowane pytanie tutaj: http://stackoverflow.com/a/9568622/96656 –

1

W przypadku Javascript zwykle nie trzeba używać ofert. Możesz użyć ' lub ", jeśli chcesz, i musisz użyć cudzysłowów, jeśli istnieje konflikt między nazwą twojej własności a słowem zastrzeżonym JS, takim jak null. Odpowiedź, z którą się łączysz, wydaje się być poprawna, tak.

Dla JSON, you should use " around strings (nazwy w tym obiekcie Object)

4

nazwy nieruchomości w literały obiekt musi być łańcuchami, cyfry lub identyfikatory. Jeśli nazwa jest poprawnym identyfikatorem, to nie potrzebujesz cytatów, w przeciwnym razie będą one zgodne z tymi samymi regułami co łańcuchy.

firstProperty i secondProperty są prawidłowymi identyfikatorami, więc nie potrzebujesz wycen.

Więcej informacji na stronie 65 z the specification.

4

Trzeba tylko użyć cytuje wokół właściwości, jeśli nazwa właściwości jest słowem zastrzeżonym (jak dla, w, funkcja, ...). W ten sposób uniemożliwisz Javascript interpretowanie słowa kluczowego jako części języka i najprawdopodobniej dostaniesz błąd składni. Ponadto, jeśli chcesz używać spacji w nazwach właściwości, musisz również użyć cudzysłowów. Jeśli nazwy właściwości są zwykłymi nazwami bez potencjału ani spacji, możesz użyć preferowanej składni.

Jedną z innych możliwości, która wymaga wyceny, jest stosowanie miniodtwarzaczy JavaScript, takich jak kompilator Google, ponieważ zastępuje on wszystkie nazwy właściwości. Jeśli umieścisz nazwy właściwości w cudzysłowach, kompilator zamykający zachowa właściwość podczas jej kodowania. Ma to pewne znaczenie podczas eksportowania obiektów w bibliotece lub przy użyciu obiektu parametru.

Powiązane problemy