让前端飞

解构赋值

2017-10-07  本文已影响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'
上一篇下一篇

猜你喜欢

热点阅读