是用方括号声明后用方括号索引的有效javascript吗?

时间:2013-01-08 20:17:04

标签: javascript arrays syntax

通常我会写

arr = ['choiceA', 'choiceB', 'choiceC', 'choiceD', 'choiceE'];
position = 3;
answer = arr[position];

只是想知道...... 是否有效的javascript写下面的内容?
它会跨浏览器工作吗?

answer = ['choiceA', 'choiceB', 'choiceC', 'choiceD', 'choiceE'][position];

4 个答案:

答案 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语句,并且也可以将它与对象文字一起使用。