数组是 JavaScript ECMAScript 中的左值吗?

Posted

技术标签:

【中文标题】数组是 JavaScript ECMAScript 中的左值吗?【英文标题】:Are Arrays as lvalues in JavaScript ECMAScript-compliant? 【发布时间】:2009-10-31 15:51:29 【问题描述】:

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 返回错误。

【问题讨论】:

我想知道这是否合乎逻辑……关于 LHS 分配等部分似乎不合逻辑 【参考方案1】:

不,这是 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 部分实现了一些解构赋值。它不支持对象或函数参数,但它支持您的简单示例。

【讨论】:

啊。我想这将是一个更新的功能。而且由于尚未完全支持 1.7,我想我必须坚持使用更详细的选项。谢谢! 迟到的评论,但我正在搜索这个主题。解构分配是为现已废弃的 ECMAScript 第 4 版计划的一项功能。有点遗憾它没有进入 ECMAScript 5。 看起来它在 ecmascript 的桌面上:harmony wiki.ecmascript.org/doku.php?id=harmony:destructuring 我很确定他指的是 ECMAScript 3,所以我做出了相应的回答。我同意我应该提到它是和谐的,虽然我什至不确定它是否是,回到我一年前发布的时候。

以上是关于数组是 JavaScript ECMAScript 中的左值吗?的主要内容,如果未能解决你的问题,请参考以下文章

javascript-理解05?数组的概念及定义

JavaScript中的Array数组详解

第一百零三节,JavaScript对象和数组

0基础学习微信小程序(12)-ECMAScript5数组操作方法

JavaScript之引用类型(Array类型)

JavaScript中Array类型方法总结