博主信息
Lon
博文
22
粉丝
0
评论
0
访问量
2537
积分:0
P豆:48

ES6 解构赋值

2021年09月29日 16:36:55阅读数:79博客 / Lon/ ES6

ES6 解构赋值

概述

解构赋值是对赋值运算符的扩展。
他是一种针对数组或者对象进行模式匹配,然后对其中的变量进行赋值。
在代码书写上简洁且易读,语义更加清晰明了;也方便了复杂对象中数据字段获取。

为何要使用解构操作?

是因为 JSON 格式的普及,导致大量数据提取工作;
而这种提取过程,在 ES6 的解构语法中,带来了极大的便捷性;

一、数组解构

数组解构赋值,有两种基本的写法:1.分行解构;2 单行解构;

  1. let info = ['Mr.Lon', 18, '男']; //数组赋值
  2. let [name, age, gender] = info; //数组解构赋值
  3. info = ['Mr.Lon', 18, '男'],
  4. [name, age, gender] = info; //同上
  5. [name, age, gender] = ['Mr.Lon', 18, '男'];
  6. console.log(name);

从上面的例子分行或单行,都可以确定必须一一完美匹配才可以正确赋值;

1、数组层次也需要匹配(可嵌套)

  1. let [name,[age,gender]] = ['Mr.Lon',[18,'男']];

2、用逗号作为占位符不赋值(可忽略)

  1. let [a, , b] = [1, 2, 3];

3、在变量解构时,可以在数组的元素中设置一个默认值(解构默认值)

  1. //当 gender 没有赋值时,采用默认值
  2. let [name,age,gender = '男'] = ['Mr.Lon',18];

4、还有一种…var 的语法,可以将没有赋值的内容都赋值给这个变量(剩余运算符)

  1. let [name,...other] = ['Mr.Lon',18,'男'];

二.对象解构

1. 对象的解构方式和数组大同小异,定义一个对象字面量,然后解构赋值

  1. let obj = {
  2. name : 'Mr.Lon',
  3. age : 18,
  4. }
  5. //解构对象至变量
  6. let {name , age} = obj;
  7. //直接输出变量
  8. console.log(name)
  9. console.log(age)
  10. // 对象的解构也支持单行的简写模式,具体如下
  11. let {name , age} = {name : 'Mr.Lon' , age : 18}

2、在对象字面量里,还嵌套了对象,解构时也用相同的方法是解开即可(可嵌套)

  1. let obj = {
  2. name : 'Mr.Lon',
  3. age : 18,
  4. info : {
  5. id : 1,
  6. gender : '男'
  7. }
  8. }
  9. let{info : {id,gender}} = obj;
  10. console.log(gender)

3、对象变量解构也可以设置一个默认值,在没有赋值时输出默认值(解构默认值);

  1. let obj = {}
  2. let {name,age,gender = '女'} = obj;
  3. console.log(gender) //如果没有默认值则undefined

4、如果不想要对象属性名作为解构变量,可以通过键值对的方式更改变量名(使用别名,防止命名冲突);

  1. let {name : myName , age : myAge} = obj; //name失效

5、剩余运算符

  1. let { ...r } = { a: 1, b: 2, c: 3 };
  2. console.log(r);//{a: 1, b: 2, c: 3}

三、其它解构

ES6 除了提供对象和数组解构外,还提供了很多适用的解构方案;

1、如果你想要让个普通变量的值进行交换,不必需要第三个变量参与;

  1. let key = 1;
  2. let value = 'Me.Lon';
  3. //解构操作,变量互换
  4. [key , value] = [value , key];
  5. console.log(key);//Me.Lon
  6. console.log(value);//1

2、如果函数的返回值是一个数组或对象,直接将函数进行赋值解构;

  1. function fn(){
  2. return ['Mr.Lon',18,'男'];
  3. }
  4. let [name , age , gender] = fn();
  5. function fn2(){
  6. return{
  7. name : 'Mr.Lon',
  8. age : 18,
  9. gender : '男'
  10. }
  11. }
  12. let {name , age , gender} = fn2();

3、当函数进行参数传递的时候,可以进行数组和对象字面量方式的传参;

  1. function fn([name,agae,gender]){
  2. console.log(name);
  3. }
  4. fn(['Mr.Lon',18,'男']);
  5. function fn2({name,age,gender}){
  6. console.log(name);
  7. }
  8. fn2({
  9. name : 'Mr.Lon',
  10. age : 18,
  11. gender : '男'
  12. })

4、除了对象和数组可以使用解构,字符串类型的数据也可以解构

  1. let [x,y,z] = 'ABC';
  2. console.log(x);//A
  3. let {length : len} = 'ABC'; //长度
  4. console.log(len); //输出3

版权申明:本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!

全部评论

文明上网理性发言,请遵守新闻评论服务协议

条评论
  • ES6之前,两个变量之间交换需要引入第三方的变量,而ES6引入了,使得代码书写上更加简洁且易读。
    今天javascript栏目介绍ES6中的Javascript
    本文详增强算术“-=”操作

    2020-07-04

    1320

    我们可以运用ES6对象来做简化。这样的方法我们不光可以在小程序中使用。
    jquery改变this指向的方法:1、利用【var that=this;】来改变嵌套函数的【this】指向;2、利用es6箭头函数改变this指向,代码为【$('div').on('click',
    采用的方式有:1、原型链继承,每一个AO对象都有一个prototype,返回对象类型原型的引用,所以可以给它一个对象;2、原型冒充继承,把父类的造函数拿过来执行一遍;3、复制继承,把父类所有的属性和方法复制过来
    es6新特性:const与let变量、模板字面量、、增强的对象字面量、for...of循环、展开运算符(...)
    javascript特性有:1、展开操作符;2、剩余参数;3、字符串插;4、简写属性;5、方法属性;6、;7、数组方法;8、模块;9、Promises+Async/Await;10、箭头函数和字典作用域
    在php中,list的意思为“列表”,该函数可以把一个数组中的分别给一组变量,可以在单次操作内为一组(多个)变量;语法“list($var1 [, $val2, ...]);”。
    本篇文章给大家介绍一下ES6字符串中的新增方法。有一定的参考价,有需要的朋友可以参考一下,希望对大家有所帮助。
    之前的文章《一文讲JS中ES6代理Proxy用法(代码分享)》中,给大家了了JS中ES6代理Proxy用法。
    No.1 __construct() 定义:类的造函数 释:对象创建后第一个被自动调用的方法,通常被用来执行一些有用的初始化任务,例如在创建对象时对成员属性予初始
    php中造函数和析函数的区别是:1、造函数可以接收参数,能够在创建对象时给对象属性,析函数不能带参数;2、创建对象时调用造函数,析函数是在销毁对象时自动调用的。
    php中造函数的作用是:用来在创建对象时初始化对象,即为对象成员变量初始造函数总与new运算符一起使用在创建对象的语句中。一个类可以有多个造函数。
    react中引用json的方法:1、直接import引入,使用【create-react-app】来建项目;2、把json文件改成js文件,把原本json中的数据给变量data。
    实现golang语言多态的方法:首先定义一个接口类型并在其中声明一些要实现的功能;然后定义一个结体去实现声明里的函数;最后创建结体对象就可到该接口类型了。
    “本文将实现一个简单的容器类”五、玩转自己的容器类此时我们把Person 的文件修改一下添加一个造函数,把参数使用造函数进行,在buy方法中就不需要在进行传递参数,只需要使用this->obj
    php未定义变量报错的决办法:1、初始化变量进行;2、加@符号来对错误进行抑制,代码如“$sid = @$_POST['sid'];”。
    php配置文件不起作用的决办法:1、找到并打开php-fpm.conf文件;2、直接在“php-fpm.conf”中用的方式添加属性即可。
    html标签失效的决办法:1、将元素的innerText成元素的innerHTML;2、用样式呈现换行,代码如“white-space: pre-line;”。