通常我会写
arr = ['choiceA', 'choiceB', 'choiceC', 'choiceD', 'choiceE'];
position = 3;
answer = arr[position];
只是想知道......
是否有效的javascript写下面的内容?
它会跨浏览器工作吗?
answer = ['choiceA', 'choiceB', 'choiceC', 'choiceD', 'choiceE'][position];
答案 0 :(得分:4)
是的,根据ECMAScript 5 specification:
MemberExpression :
PrimaryExpression
FunctionExpression
MemberExpression [ Expression ]
MemberExpression . IdentifierName
new MemberExpression Arguments
其中PrimaryExpression
is defined as:
PrimaryExpression :
this
Identifier
Literal
ArrayLiteral
ObjectLiteral
( Expression )
所以构造ArrayLiteral[Expression]
是有效的。
这并不一定意味着它适用于每个浏览器(特别是IE有一些语法怪癖),但你应该认为它确实存在。
答案 1 :(得分:1)
是的,它会的。这个sintax看起来很奇怪,但它完全有效。您正从一个未分配给任何内容的数组中获取位置值。
答案 2 :(得分:1)
这是有效的。它和做
几乎一样 some_func_that_returns_an_array()[7]
答案 3 :(得分:1)
是的,数组文字可以是member operator的语法上有效的左侧部分。它确实可以跨浏览器工作。
我发现这个构造是一个非常可读的替代冗长的switch
语句,并且也可以将它与对象文字一起使用。