前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ES6基础-变量的解构赋值

ES6基础-变量的解构赋值

作者头像
达达前端
发布2019-11-28 20:48:09
7720
发布2019-11-28 20:48:09
举报
文章被收录于专栏:达达前端达达前端

作者 | Jeskson 来源 | 达达前端小酒馆

解构赋值:

数组的解构赋值,对象的解构赋值,字符串的解构赋值,数值与布尔值的解构赋值,函数参数的解构赋值。

开发环境准备:

编辑器,VS Code,Atom,Sublime,或IDE(Webstorm)浏览器(最新的Chrome)或Node.js环境越新越好。

数组的解构赋值:

解构赋值语法是一个JavaScript表达式,这使得可以将值从数组或属性从对象提取道不同的变量中。

重点解构赋值的概念理解:

数组的解构赋值 对象的解构赋值 字符串的解构赋值 数值和布尔值的解构赋值 函数参数的解构赋值

数组的解构赋值

代码语言:javascript
复制
const arr = [1,2,3,4];
let [a,b,c,d] = arr;

更复杂的匹配规则

代码语言:javascript
复制
const arr = ['a','b',['c','d',['e','f','g']]];
const [ , b] = arr;

const [ , , g] = ['e', 'f', 'g']
const [ , , [ , , g]] = ['c','d',['e','f','g']];

const [ , , [ , , [ , , g]]] = arr;

扩展运算符

代码语言:javascript
复制
const arr1 = [1,2,3];
const arr2 = ['a', 'b'];
const arr3 = ['zz', 1];
const arr4 = [arr1, arr2, arr3];
代码语言:javascript
复制
const arr4 = [...arr1, ...arr2, ...arr3];
代码语言:javascript
复制
const arr = [1,2,3,4];
const [a,b,...c] = arr;
代码语言:javascript
复制
const arr = [1, undefined, undefined];
const [a,b,c,d] = arr;

默认值:

代码语言:javascript
复制
const [a, b=2, c, d = 'a'] = arr;

交换变量

代码语言:javascript
复制
let a = 2;
let b = 1;
let temp;

temp = a;
a = b;
b = temp;
代码语言:javascript
复制
[a,b] = [b,a];

接收多个函数返回值

代码语言:javascript
复制
function getUserInfo(id) {
 // ...ajax
 return {
  true, // 第一个参数
  // 第二个参数
  {
   name: 'dada',
   gender: '男',
   id: id
  },
  '请求成功'
 };
};

const [status, data, msg] = getUserInfo(1)

对象的解构赋值:

对象的解构赋值与数组的解构赋值相似,等号左右两边都为对象解构

代码语言:javascript
复制
const { a, b } = {a:1, b:2}

左边的{}中为需要赋值的变量,右边为需要解构的对象

对象的解构赋值:

对象解构赋值的方法,稍微复杂的解构条件,扩展运算符,如何对已经申明了的变量进行对象的解构赋值,默认值。

对象的解构赋值的主要用途,提取对象属性,使用对象传入乱序的函数参数,获取多个函数的返回值。

对象的解构赋值:

代码语言:javascript
复制
const obj = {
 name: 'da',
 age: '12'
};

const { name, age } = obj;

提取对象的属性:

结合扩展运算符:

如何对已经申明了的变量进行对象的解构赋值

代码语言:javascript
复制
// 报错
let age;
const obj = {
 name: 'da',
 age: 12
};
{age} = obj;

({age} = obj); // 对的
let {age} = obj;

默认值:

代码语言:javascript
复制
let girlfriend = {
 name: '小红',
 age: 22, // age: undefined
};

let {name,age = 24, hobby = ['学习'] } = girlfriend;

提取对象的属性:

代码语言:javascript
复制
const { name, hobody: [ hobby1 ] } = {
 name: "小红",
 hobby: ['学习']
};

使用对象传入乱序的函数参数:

代码语言:javascript
复制
function AJAX(option) {
 var type = option.type || 'get';
 console.log(option);
};
AJAX({
 url: '/getinfo',
 data: {
  a: 1
 },
});

获取多个函数返回值:

代码语言:javascript
复制
function getUserInfo(uid) {
 // ...ajax
 return { 
  status: true,
  data: {
   name: 'da',
  },
  msg: '1'
 };
};
const { status, data, msg } = getUserInfo(1);

字符串的解构赋值

代码语言:javascript
复制
const str = 'i am';
const [a,b,c,...ath] = str;

数值与布尔值的解构赋值:

代码语言:javascript
复制
// 数值与布尔值的解构赋值

const { valueOf } = 1;

函数参数的解构赋值:

代码语言:javascript
复制
function m ([x,y]) {
 return [y,x];
}

let arr = [1,2];
arr = m(arr);

对象的解构赋值:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档