如何在JavaScript中一次分配多个变量?

mli*_*bre 6 javascript multiple-assignment

有没有办法在JavaScript中执行多个赋值,如下所示:

var a, b = "one", "two";
Run Code Online (Sandbox Code Playgroud)

这相当于:

var a = "one";
var b = "two";
Run Code Online (Sandbox Code Playgroud)

Piy*_*oor 27

在ES6中你可以做到

var [a,b] = ["one" , "two"];
Run Code Online (Sandbox Code Playgroud)

上面的代码是ES6表示法,称为数组解析/对象解构(如果它是一个对象).

您在表达式的右侧提供了数组,并且左侧有方括号括起来的逗号分隔变量

第一个变量映射到第一个Array值,依此类推

  • 这会因构造右侧数组而产生任何开销吗?或者当右侧是数组文字时,解释器是否足够聪明以拥有快速路径? (2认同)

Dan*_*nny 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"
Run Code Online (Sandbox Code Playgroud)

对象解构

好像:

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

const {id, is_verified} = user;

console.log(id); // 42
console.log(is_verified); // true 
Run Code Online (Sandbox Code Playgroud)

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

从模块导入多个导出。这会将 foo 和 bar 都插入到当前作用域中。

import {foo, bar} from '/modules/my-module.js';
Run Code Online (Sandbox Code Playgroud)