通常我会写
arr = ['choiceA', 'choiceB', 'choiceC', 'choiceD', 'choiceE'];
position = 3;
answer = arr[position];
只是想知道......编写以下内容是否有效?
它可以跨浏览器工作吗?
answer = ['choiceA', 'choiceB', 'choiceC', 'choiceD', 'choiceE'][position];
通常我会写
arr = ['choiceA', 'choiceB', 'choiceC', 'choiceD', 'choiceE'];
position = 3;
answer = arr[position];
只是想知道......编写以下内容是否有效?
它可以跨浏览器工作吗?
answer = ['choiceA', 'choiceB', 'choiceC', 'choiceD', 'choiceE'][position];
是的,根据ECMAScript 5 规范:
MemberExpression :
PrimaryExpression
FunctionExpression
MemberExpression [ Expression ]
MemberExpression . IdentifierName
new MemberExpression Arguments
PrimaryExpression :
this
Identifier
Literal
ArrayLiteral
ObjectLiteral
( Expression )
所以构造ArrayLiteral[Expression]
是有效的。
这并不一定意味着它适用于所有浏览器(尤其是 IE 有一些语法怪癖),但您应该假设它确实有效。
是的,它会。这个语法乍一看很奇怪,但它是完全有效的。您正在从未分配给任何东西的数组中获取位置值。
这是有效的。这和做的差不多
some_func_that_returns_an_array()[7]
是的,数组字面量可以是成员运算符的语法上有效的左侧部分。它确实可以跨浏览器工作。
我发现这个结构是冗长语句的一个非常易读的替代方案switch
,并且也将它与对象文字一起使用。