普通なら書くだろう
arr = ['choiceA', 'choiceB', 'choiceC', 'choiceD', 'choiceE'];
position = 3;
answer = arr[position];
ただ疑問に思っているのは...次のように書くのは有効なjavascriptですか?
クロスブラウザで動作しますか?
answer = ['choiceA', 'choiceB', 'choiceC', 'choiceD', 'choiceE'][position];
普通なら書くだろう
arr = ['choiceA', 'choiceB', 'choiceC', 'choiceD', 'choiceE'];
position = 3;
answer = arr[position];
ただ疑問に思っているのは...次のように書くのは有効なjavascriptですか?
クロスブラウザで動作しますか?
answer = ['choiceA', 'choiceB', 'choiceC', 'choiceD', 'choiceE'][position];
はい、 ECMAScript 5 仕様によると、次のようになります。
MemberExpression :
PrimaryExpression
FunctionExpression
MemberExpression [ Expression ]
MemberExpression . IdentifierName
new MemberExpression Arguments
は次のようにPrimaryExpression定義されます。
PrimaryExpression :
this
Identifier
Literal
ArrayLiteral
ObjectLiteral
( Expression )
したがって、構造ArrayLiteral[Expression]は有効です。
必ずしもすべてのブラウザで動作するとは限りません (特に IE には構文の癖があります) が、動作すると想定する必要があります。
はい、配列リテラルは、メンバー operatorの構文的に有効な左側の部分にすることができます。クロスブラウザで動作します。
この構文は、長いswitchステートメントに代わる非常に読みやすいものであり、オブジェクト リテラルでも使用できます。
はい、そうなります。このシンタックスは一見奇妙に見えますが、完全に有効です。何にも割り当てられていない配列から位置の値を取得しています。
有効です。やっていることとほとんど同じです。
some_func_that_returns_an_array()[7]