回答:
いいえ、引用符で違いはありません(ご指摘のとおり、有効なJavaScript識別子ではないキーを使用する場合を除きます)。
補足として、JSONデータ交換形式で は、識別子を二重引用符で囲む必要があります(単一引用符は使用できません)。
非上場プロパティ名/ JavaScriptでオブジェクトキー、私の書き込みアップテーマに:
プロパティ名が数値リテラルまたは有効な識別子名である場合のみ、引用符を省略できます。
[…]
ブラケット表記は、すべてのプロパティ名に安全に使用できます。
[…]
ドット表記は、プロパティ名が有効な識別子名である場合にのみ使用できます。
ES5では、予約語を引用符で囲まれていないプロパティ名として使用できることに注意してください。ただし、ES3との下位互換性のために、とにかく引用することをお勧めします。
また、指定したプロパティ名を引用符なしで、またはドット表記で使用できるかどうかを通知するツールも作成しました。mothereff.in/js-propertiesでお試しください。
いいえ、JavaScriptではありません。ただし、キーを囲む引用符が存在しない場合、一部のJSONパーサーは失敗します。
それらが異なるいくつかの状況があります。たとえば、jQueryを使用していて、jQuery $()コマンドを呼び出して要素を作成するときに渡すパラメーターのリストを作成している場合、引用符で囲まれた単語はパラメーターに変換され、引用符で囲まれていない単語は関数に変換されます。たとえば、「サイズ」はオブジェクトのサイズ属性を設定し、サイズ(引用符なし)はオブジェクトのsize()関数を呼び出します。下部にあるjQuery()を参照してください。
2番目の引数は便利ですが、その柔軟性により意図しない結果が生じる可能性があります(たとえば、$( "
<input>"、{size: "4"})は、size属性を設定する代わりに.size()メソッドを呼び出します)。したがって、前のコードブロックは次のように書くことができます。
obj = { 12e34: true };、はと同じではありませんobj = { '12e34': true };。前者の場合はを介してプロパティにアクセスする必要がありますがobj['1.2e+35']、後者の場合はを使用しますobj['12e34']。詳細については、私の回答を参照してください。