解构赋值

作者: 知行社 | 来源:发表于2017-10-07 14:41 被阅读0次

从数组和对象中提取值,对变量进行赋值,这被称为解构赋值。

任何实现 Iterator 接口 的,都支持解构赋值。

数组的解构赋值

let [a, b, c] = [1, 2, 3]

上面的 a, b, c 的值分别是 1, 2, 3。支持嵌套,如

let [foo, [[bar], baz]] = [1, [[2], 3]]

对象的解构赋值

let { foo, bar } = { foo: "aaa", bar: "bbb" };
foo // "aaa"
bar // "bbb"

对象,数组的解构赋值也可以混在一起

let obj = {
  p: [
    'Hello',
    { y: 'World' }
  ]
};

let { p: [x, { y }] } = obj;
x // "Hello"
y // "World"

解构赋值支持默认值

let [x = 1, y = x] = [];     // x=1; y=1
let [x = 1, y = x] = [2];    // x=2; y=2
let [x = 1, y = x] = [1, 2]; // x=1; y=2

常见用途

交换变量的值

let x = 1;
let y = 2;

[x, y] = [y, x]

函数返回多个值

// 返回一个数组

function example() {
  return [1, 2, 3];
}
let [a, b, c] = example();

// 返回一个对象

function example() {
  return {
    foo: 1,
    bar: 2
  };
}
let { foo, bar } = example();

函数参数的默认值

jQuery.ajax = function (url, {
  async = true,
  beforeSend = function () {},
  cache = true,
  complete = function () {},
  crossDomain = false,
  global = true,
  // ... more config
}) {
  // ... do stuff
}

导入模块的指定内容

import {urls} from '@/setting'

相关文章

网友评论

    本文标题:解构赋值

    本文链接:https://www.haomeiwen.com/subject/ylyjyxtx.html