2010-12-26 4 views

Antwort

8

Keine wie auch immer.

Mit Anführungszeichen können Sie Namen angeben, die keine gültigen JavaScript-Bezeichner sind, aber sowohl a als auch b sind. Zum Beispiel wäre dies nicht legal sein:

var car = { a*b: "Saab" }; 

während dieser

var car = { "a*b": "Saab" }; 

Als a * b kein gültiger Bezeichner ist sein würde.

Beachten Sie, dass JSON (das auf JavaScript basiert) keine unbenannten Namen zulässt.

bearbeiten
Eine Ausnahme hier, wie Sie vielleicht bemerkt haben, können Sie Zahlen verwenden, ohne sie zu zitieren, die nicht gültig Javascript Identifikatoren sind. Das ist eigentlich ziemlich seltsam, habe keinen guten Grund dafür, wahrscheinlich die Möglichkeit, die Deklaration zu stutzen. car.7 wird aus dem gleichen Grund nicht analysiert, es ist kein gültiger Bezeichner, und Sie müssen car[7] verwenden.

+0

Danke. Also als Faustregel sollte man sie immer benutzen? – DarkLightA

+0

Wird beim Aufruf der Eigenschaft '7' auch das Auto [7] anstelle des Autos 7 verwendet (im Lernprogramm)?Oder kannst du beides benutzen? – DarkLightA

+1

@DarkLightA; Es hängt ein wenig vom Kontext ab, wenn Sie Ihre Objekte als traditionelle Objekte verwenden möchten, ziehe ich es vor, keine Anführungszeichen zu verwenden (da Sie mit dem Operator '.' Auf sie zugreifen möchten). Wenn Sie es stattdessen als allgemein verwendbares assoziatives Array verwenden, würde ich Anführungszeichen verwenden und auf die Elemente mit dem Operator '[]' zugreifen. – falstro

1

Als Reh sagte, gibt es keinen Unterschied am Ende, aber es erlaubt Sie sonst reservierte Schlüsselwörter oder ungültige Bezeichner zu verwenden, um:

var x = { 'a b c' : 1, 'a%#!6!#' : 1}; 

Es ist wahrscheinlich keine schlechte Idee, immer Anführungszeichen verwenden. Verschiedene Javascript-Engines betrachten verschiedene Dinge als reserviert. Zum Beispiel funktioniert dies in einem Browser in Ordnung, aber verursacht einen Syntaxfehler in Rhino:

var x = { native : true }; 

Das Mozilla Developer Network hat einige gute Informationen zu: https://developer.mozilla.org/en/JavaScript/Reference/Operators/Member_Operators

Dot Notation

some_object.property

property muss ein gültiger JavaScript-Bezeichner sein, dh eine Folge von alphanumerische Zeichen, einschließlich Unterstrich ("_") und Dollarzeichen ("$"), die nicht mit einer Zahl beginnen können. Zum Beispiel ist Objekt. $ 1 gültig, während Objekt.1 nicht gültig ist.

Bracket Notation

some_object[property]

property ist eine Zeichenfolge. Die Zeichenfolge muss kein gültiger Bezeichner sein. es kann irgendeinen Wert haben, z.B. "1foo", "! Bar!" Oder sogar "" (ein Leerzeichen).

+0

Guter Punkt auf die reservierten Wörter, obwohl es Sie nicht möchten, dass diese als Namen sowieso verwenden, da 'x.for' würde nicht funktionieren (zumindest denke ich, dass es nicht tut, oder?) – falstro

+1

Es funktioniert: 'x ['for']' –

+0

Eigentlich war das ein schlechtes Beispiel. Das funktioniert für mich: 'x = {for: 1}; alarm (x.for); ' – nickf

Verwandte Themen