17

有没有办法像这样在 JavaScript 中执行多重赋值:

var a, b = "one", "two";

这相当于:

var a = "one";
var b = "two";
4

3 回答 3

47

在 ES6 中,你可以这样做:

var [a, b] = ["one", "two"];

上面的代码是 ES6 符号,称为数组解构/对象解构(如果它是一个对象)。

您在表达式的右侧提供数组,并且在左侧有被方括号包围的逗号分隔变量。

第一个变量映射到第一个数组值,依此类推。

于 2016-07-16T13:45:42.470 回答
5

虽然你不能这样做var a, b = "one", "two";,并让它们按各自的顺序分配给每个变量,但你可以这样做var a, b;这些变量初始化undefined.

您也可以var a, b = 'foo';将 b 分配给 'foo',同时将 'a' 初始化为undefined.

var a, b;

> a
--> undefined
> b
--> undefined
> var d, e;

> e
--> undefined

> f 
--> Uncaught ReferenceError: f is not defined

> var c, g = 'foo';

> c
--> undefined
> g
--> "foo"

对象解构

好像:

const user = {
  id: 42,
  is_verified: true
};

const {id, is_verified} = user;

console.log(id); // 42
console.log(is_verified); // true 

您还将在 JavaScript 中看到这一点,以导入模块的成员

从模块导入多个导出。这会将 foo 和 bar 都插入当前范围。

import {foo, bar} from '/modules/my-module.js';
于 2020-12-14T15:30:42.703 回答
-11

不,你不能这样做。Javascript 不支持这种类型的声明

于 2016-07-16T13:46:19.057 回答