最初の形式では文字列リテラルだけでなく変数も使用できるという明白な事実以外に、どちらか一方を他方よりも使用する理由はあるでしょうか。あるとすれば、どのような場合でしょうか。
コードでは:
// Given:
var foo = {'bar': 'baz'};
// Then
var x = foo['bar'];
// vs.
var x = foo.bar;
コンテキスト: これらの式を生成するコード ジェネレーターを作成しましたが、どちらが望ましいのか疑問に思っています。
ベストアンサー1
(出典:ここ。
角括弧表記では、ドット表記では使用できない文字を使用できます。
var foo = myForm.foo[]; // incorrect syntax var foo = myForm["foo[]"]; // correct syntax
非ASCII(UTF-8)文字を含むmyForm["ダ"]
(その他の例)。
第二に、角括弧表記は、予測可能な方法で変化するプロパティ名を扱うときに便利です。
for (var i = 0; i < 10; i++) { someFunction(myForm["myControlNumber" + i]); }
切り上げする:
- ドット表記法は、書くのが速く、読みやすいです。
- 角括弧表記により、特殊文字を含むプロパティにアクセスしたり、変数を使用してプロパティを選択したりすることができます。
ドット表記で使用できない文字のもう 1 つの例として、ドットを含むプロパティ名が挙げられます。
たとえば、json 応答には というプロパティが含まれる場合がありますbar.Baz
。
var foo = myResponse.bar.Baz; // incorrect syntax
var foo = myResponse["bar.Baz"]; // correct syntax