Antworten:
Nein, die Anführungszeichen machen keinen Unterschied (es sei denn, Sie haben, wie Sie bemerkt haben, einen Schlüssel verwenden wollen, der keine gültige JavaScript-Kennung ist).
Nebenbei bemerkt erfordert das JSON-Datenaustauschformat doppelte Anführungszeichen um Bezeichner (und erlaubt keine einfachen Anführungszeichen).
Aus nicht zitierten Eigenschaftsnamen / Objektschlüsseln in JavaScript , meine Beschreibung zum Thema:
Anführungszeichen können nur weggelassen werden, wenn der Eigenschaftsname ein numerisches Literal oder ein gültiger Bezeichnername ist .
[…]
Die Klammernotation kann sicher für alle Eigenschaftsnamen verwendet werden.
[…]
Die Punktnotation kann nur verwendet werden, wenn der Eigenschaftsname ein gültiger Bezeichnername ist.
Beachten Sie, dass reservierte Wörter in ES5 als nicht zitierte Eigenschaftsnamen verwendet werden dürfen. Aus Gründen der Abwärtskompatibilität mit ES3 würde ich jedoch empfehlen, sie trotzdem zu zitieren.
Ich habe auch ein Tool erstellt, das Ihnen sagt, ob ein bestimmter Eigenschaftsname ohne Anführungszeichen und / oder mit Punktnotation verwendet werden kann. Probieren Sie es unter Mothereff.in/js-properties aus .
Hier gibt es keinen Unterschied. Nur eine Frage des Stils. Einer der Gründe dafür ist die Möglichkeit, "Super" oder "Klasse" als Schlüssel zu verwenden, da dies reservierte Schlüsselwörter sind.
Einige Leute könnten versucht sein, eine Zeichenfolge mit Leerzeichen zu übergeben und dann o ['Ich kann Leerzeichen haben'] aufzurufen. Aber ich würde diese schlechte Praxis nennen.
Nein, nicht zu Javascript. Einige JSON-Parser schlagen jedoch fehl, wenn die Anführungszeichen um die Schlüssel nicht vorhanden sind.
Es gibt Situationen, in denen sie unterschiedlich sind. Wenn Sie beispielsweise jQuery verwenden und beim Aufrufen des Befehls jQuery $ () zum Erstellen eines Elements eine Liste der zu übergebenden Parameter erstellen, werden in Anführungszeichen gesetzte Wörter in Parameter und nicht in Anführungszeichen gesetzte Wörter in Funktionen umgewandelt. Beispielsweise legt "size" das Größenattribut des Objekts fest, und size (keine Anführungszeichen) ruft die size () -Funktion für das Objekt auf. Siehe jQuery () unten:
Obwohl das zweite Argument praktisch ist, kann seine Flexibilität zu unbeabsichtigten Konsequenzen führen (z. B. $ ("
<input>", {size: "4"}), wenn die Methode .size () aufgerufen wird, anstatt das Größenattribut festzulegen). Der vorherige Codeblock könnte also stattdessen geschrieben werden als:
obj = { 12e34: true };ist nicht dasselbe wieobj = { '12e34': true };. Ersteres würde erfordern, dass Sie über die Eigenschaft zugreifenobj['1.2e+35'], während Sie für letzteres verwenden würdenobj['12e34']. Siehe meine Antwort für weitere Details.