2010-12-26 13 views

答えて

8

何もありません。

引用符では、有効なjavascript識別子ではない名前を指定できますが、abの両方が指定できます。たとえば、これは法的ではないでしょう:* bが有効な識別子ではありませんように、この一方

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

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

だろう。

JSON(JavaScriptに基づいています)では引用符のない名前を使用できないことに注意してください。

編集
ここ例外、あなたが気づいたとして、あなたは有効なJavaScript識別子ではありませんこれは、それらを引用せずに数字を使用することができます。これは実際にはむしろ奇妙なことですが、これには正当な理由はなく、恐らく宣言を簡略化する機会です。 car.7は同じ理由で解析されません。有効な識別子ではないため、car[7]を使用する必要があります。

+0

ありがとうございました。だから、経験則として常にそれらを使うべきですか? – DarkLightA

+0

また、プロパティ '7'を呼び出すと、car.7ではなくcar [7]が使用されます(チュートリアルでは)?またはどちらかを使用できますか? – DarkLightA

+1

@DarkLightA;コンテキストに少し依存します。オブジェクトを従来のオブジェクトとして使用する場合は、引用符を使用しないことをお勧めします( '.'-演算子を使用してアクセスする場合)。代わりに、汎用の連想配列として使用している場合は、引用符を使用し、 '[]'演算子で要素にアクセスします。 – falstro

1

卵が言ったように、最終的には違いはありませんが、それはそうでない場合は予約キーワードまたは無効な識別子を使用できるようになります:

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!"、さらには ""(空白)

+0

予約語には良い点がありますが、 'x.for'が機能しないため、名前として使用したくないかもしれませんが(少なくとも私はそれはそうではないと思います) – falstro

+1

動作します: 'x ['for']' –

+0

実際、これは悪い例でした。これは私のために働きます: 'x = {for:1};警告(x.for); ' – nickf

関連する問題