var car = { manyCars: {a: "Saab", "b": "Jeep"}, 7: "Mazda" };
この例ではcar.manyCars.a
とcar.manyCars.b
の違いは何ですか?JavaScriptでは、二重引用符( "")で囲まれたプロパティ名とないプロパティ名の違いは何ですか?
var car = { manyCars: {a: "Saab", "b": "Jeep"}, 7: "Mazda" };
この例ではcar.manyCars.a
とcar.manyCars.b
の違いは何ですか?JavaScriptでは、二重引用符( "")で囲まれたプロパティ名とないプロパティ名の違いは何ですか?
何もありません。
引用符では、有効なjavascript識別子ではない名前を指定できますが、a
とb
の両方が指定できます。たとえば、これは法的ではないでしょう:* bが有効な識別子ではありませんように、この一方
var car = { a*b: "Saab" };
が
var car = { "a*b": "Saab" };
だろう。
JSON(JavaScriptに基づいています)では引用符のない名前を使用できないことに注意してください。
編集
ここ例外、あなたが気づいたとして、あなたは有効なJavaScript識別子ではありませんこれは、それらを引用せずに数字を使用することができます。これは実際にはむしろ奇妙なことですが、これには正当な理由はなく、恐らく宣言を簡略化する機会です。 car.7
は同じ理由で解析されません。有効な識別子ではないため、car[7]
を使用する必要があります。
卵が言ったように、最終的には違いはありませんが、それはそうでない場合は予約キーワードまたは無効な識別子を使用できるようになります:
var x = { 'a b c' : 1, 'a%#!6!#' : 1};
おそらく、常に引用符を使用することは悪い考えではありません。異なるjavascriptエンジンは、別のものを予約すると考えています。例えば、これは、ブラウザでは正常に動作しますが、Rhinoの中に構文エラーが発生します。
var x = { native : true };
Mozillaの開発者ネットワークがあまりにもいくつかの良い情報を持っていますhttps://developer.mozilla.org/en/JavaScript/Reference/Operators/Member_Operators
ドット表記
を
some_object.property
property
は有効なJavaScript識別子、つまり数字で始めることのできないアンダースコア( "_")とドル記号( "$")も含む英数字です。たとえば、object。$ 1は有効ですが、object.1は有効ではありません。
ブラケット表記
some_object[property]
property
文字列です。文字列は有効な識別子である必要はありません。それは任意の値を有することができる。 "1foo"、 "!bar!"、さらには ""(空白)
ありがとうございました。だから、経験則として常にそれらを使うべきですか? – DarkLightA
また、プロパティ '7'を呼び出すと、car.7ではなくcar [7]が使用されます(チュートリアルでは)?またはどちらかを使用できますか? – DarkLightA
@DarkLightA;コンテキストに少し依存します。オブジェクトを従来のオブジェクトとして使用する場合は、引用符を使用しないことをお勧めします( '.'-演算子を使用してアクセスする場合)。代わりに、汎用の連想配列として使用している場合は、引用符を使用し、 '[]'演算子で要素にアクセスします。 – falstro