我可以从 JavaScript 中的数组声明 2 个变量吗?

Can I declare 2 variables from an array in JavaScript?

我目前的代码中有这个:

var user = this.value.split("@")[0];
var domain = this.value.split("@")[1];

我希望能够做这样的事情:

var user, domain = this.value.split("@");

(当然这会创建一个空变量 "user",并将 "domain" 分配给 .split() 返回的数组)


我在 PHP 中做到了,就像这样:

list($user, $domain) = explode('@', $_POST['user']);

想知道是否有 JavaScript 等价物?

ES6 将添加 destructuring assignments,这让您几乎可以完成您所写的内容:

// Will be valid in ES6
var [user, domain] = this.value.split("@");

...但您今天(在大多数引擎中)无法做到这一点。相反,您需要一个中间变量:

var parts = this.value.split("@");
var user = parts[0];
var domain = parts[1];

...或者像您所做的那样复制 split

这是一个适用于最新版本的 Firefox 的实例,它已经具有解构赋值:

// Requires that destructuring assignments work on your browser;
// recent Firefox has them
var value = "coolness@example.com";
var [user, domain] = value.split("@");
snippet.log("user = " + user);
snippet.log("domain = " + domain);
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>