【发布时间】:2014-03-15 13:43:50
【问题描述】:
我希望能够在节点 js 中做这种赋值:
[a,b,c] = [1,2,3]
或者就像在 python 中一样
a,b,c = 1,2,3
这样我就有 a=1、b=2 和 b=3。
其实这样做的目的是为了做类似的事情
[a,b,c] = somefunc()
或用于数组声明
[a,b,c] = [[],[],[]]
有什么想法吗?
【问题讨论】:
标签: javascript node.js
我希望能够在节点 js 中做这种赋值:
[a,b,c] = [1,2,3]
或者就像在 python 中一样
a,b,c = 1,2,3
这样我就有 a=1、b=2 和 b=3。
其实这样做的目的是为了做类似的事情
[a,b,c] = somefunc()
或用于数组声明
[a,b,c] = [[],[],[]]
有什么想法吗?
【问题讨论】:
标签: javascript node.js
还没有 - Node.js 使用 V8 引擎,它实现了 ECMA Script 5。
但此功能将在下一个 ECMA 脚本 6 版本中提供。它被描述为in this blog post或this wiki。 V8(因此 Node.js 也是如此)将实现它,如 per this issue。
一旦实现,它将如下所示:
[a, b] = [b, a]
或者这个:
function f() { return [1, 2, 3] }
var [a, , b] = f();
(来自 wiki 的示例)。
如果你真的需要这个,你可以随时使用像Google Traceur compiler 这样的工具,它允许你编写 ES6 代码并将其“编译”成与所有现代浏览器(和 Node.js)兼容的 JavaScript。
【讨论】:
“节点”不是一种语言。你真的在问你是否可以在 JavaScript 中做到这一点,不,你不能。在 JavaScript(1.7 之前)中没有任何形式的 destructured assignment,也没有办法使类似的东西起作用。您不能分配给数组。
除非您使用的是 JavaScript 1.7。然后它将完全按照您编写的那样工作。
【讨论】: