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

时间:2015-02-17 11:08:56

标签: javascript php arrays variables variable-assignment

我目前在我的代码中有这个:

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等价物吗?

1 个答案:

答案 0 :(得分:2)

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>
&#13;
&#13;
&#13;