Blogger Information
Blog 33
fans 0
comment 0
visits 49803
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
ES6 解构赋值
Lon
Original
543 people have browsed it

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
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post