是否符合JavaScript ECMAScript标准的数组?

时间:2009-10-31 15:51:30

标签: javascript arrays lvalue ecma262

Firefox 3.5.3(至少)允许我编写如下代码:

var array = [4, 5, 6];
var foo, bar, baz;
[foo, bar, baz] = array;

此时

foo => 4
bar => 5
baz => 6

这对代码清晰度非常有帮助。

这是否符合ECMAScript标准?我在规范中没有看到任何内容,但JSLint返回错误。

1 个答案:

答案 0 :(得分:3)

不,这是JavaScript 1.7中引入的一项名为destructuring assignment的功能。 JavaScript不是ECMAScript。 ECMAScript是一些JavaScript功能的标准化尝试。只有两个JavaScript引擎:(Spider | Trace | Action)Monkey和Rhino。每个其他引擎都是ECMAScript引擎。

以下是一些例子:

var {a, b} = {b:2, a:1}; // a === 1, b === 2
var [c, d] = [3, 4]; // c === 3, d === 4
var {x: e} = {x: 5}; //  e === 5
function f({a, b: c}, [d, e]) {
  // same as: var [{a, b: c}, [d, e]] = arguments
}

Opera部分实现了一些解构赋值。它不支持对象或函数参数,但它支持您的简单示例。