1、什么是解构赋值
ES6允许按照预定的模式,从数组、对象中提取值,对变量进行赋值。
我们直接用例子说明。
 
 2. 数组的解构赋值
数组传统的变量赋值:
     var arr=[1,2,3];
     var a=arr[0];
     var b=arr[1];
     var c=arr[2];
     console.log(a);   //1
     console.log(b);  //2
     console.log(c);  //3
 
数组的解构赋值:
     var arr[a,b,c]=[1,2,3];
     console.log(a);   //1
     console.log(b);  //2
     console.log(c);  //3
 
数组解构赋值的几种情况:
(1)数值中嵌套数组
     var arr[a,b, [c,d]]=[1,2,[3,4]];
     console.log(a);   //1
     console.log(b);  //2
     console.log(c);  //3
     console.log(4);  //4
(2) 不完成解构
     var arr[a,b, c]=[1,2];
     console.log(a);   //1
     console.log(b);  //2
     console.log(c);  //undefined
(3) 设置默认值
     var arr[a,b, c=3]=[1,2];
     console.log(a);   //1
     console.log(b);  //2
     console.log(c);  //3
(4) 修改默认值
     var arr[a,b, c=3]=[1,2,4];
     console.log(a);   //1
     console.log(b);  //2
     console.log(c);  //4
 
2. 对象的解构赋值
     var {a,b,c}={"a":1,"b":2,"c":3};
     console.log(a);   //1
     console.log(b);  //2
     console.log(c);  //3
与数组的解构赋值不同之处:数组中按顺序赋值,而对象是按属性名赋值。例:
     var {a,b,c,d}={"a":1,"c":2,"b":3,"e":4};
     console.log(a);   //1
     console.log(b);  //3
     console.log(b);  //2
     console.log(d);  //undefined
这时,我们可以做出修改,使d取得e的赋值: var {a,b,c,d:e}={"a":1,"c":2,"b":3,"e":4}; (将e赋值给d)
 
(1)对象的嵌套赋值
     var {a:{b}}={"a":{"b":1}}
     console.log(a);   //报错
     console.log(b);   //1
(2)指定默认值
     var {a,b=2}={"a":1}
     console.log(a);   //1
     console.log(b);   //2
(3)字符串的解构赋值
     var {a,b}='你好';
     console.log(a);   //你
     console.log(b);   //好
 
3. 解构赋值的作用
(1)交换数值:不必引入中间的临时变量
     var x=1;
     var y=2;
     [x,y]=[y,x];
(2)提取函数返回的多个值:(函数只能有一个返回值,将多个值放在数组或对象中返回)
     function demo(){
          return {"name":"a","age":"15"};
     }
     var {name,age}=demo();
     console.log(name);  //a
     console.log(age);  //15
(3)定义函数参数:(只获取需要的参数,忽略多余的参数)
     function demo(a,b){  
          console.log("name:"+a);  //name:haha
          console.log("age:"+b);  //age:16
     }
     demo(a:"haha",b:"16",c:"160cm");
(4)设置函数参数的默认值
        传统的设置参数默认值:
     function demo(a){  
          var name;
          if(a===undefined){
               name="haha";
          }else{
               name=a;
          }
          console.log(name); 
     }
       解构赋值设置参数默认值:
     function demo({name="haha"}){  
          console.log(name);    
     }
     demo({});   //haha
     demo({name:"aa"})  //aa
 
 
 
 
 
 
—————————————————————————
参考公众号:web前端教程
 
 

ES6—解构赋值的更多相关文章

  1. ES6解构赋值

    前面的话 我们经常定义许多对象和数组,然后有组织地从中提取相关的信息片段.在ES6中添加了可以简化这种任务的新特性:解构.解构是一种打破数据结构,将其拆分为更小部分的过程.本文将详细介绍ES6解构赋值 ...

  2. es6 解构赋值

    ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring). 关于给变量赋值,传统的变量赋值是这样的: var arr = [1,2,3];//把数组的值 ...

  3. (2)ES6解构赋值-数组篇

    1.解构赋值-数组篇 //Destrcturing(解构) //ES5 /* var a = 1; var b = 2; var c = 3; */ //ES6 var [a,b,c] = [1,2, ...

  4. es6 解构赋值 新认知/新习惯

    es6 的解构赋值其实很早就学习了,但一直纠结于习惯和可读性问题,所以没有大规模使用.最近被 react调教一番之后.已经完全融入认知和习惯中去了.总结一下三个常用的技巧: 对象取值 取值并重命名 剩 ...

  5. 简单看看es6解构赋值

    哎,我真的是太难了,今天就被这个解构赋值(也可以叫做析构,貌似析构是在c++中的,所以我这里叫做解构赋值吧)弄的我很烦,本来以为很容易的,结果还是弄了好久...就总结一下解构吧! 1.解构的基本使用 ...

  6. ES6解构赋值常见用法

    解构赋值出现的契机: let obj = { a: 1, b: 2 } // 取值 let a = obj.a let b = obj.b 问题核心: 每次取值既要确定对象属性名,还得重新定义一个变量 ...

  7. ES6 解构赋值详解

    解构赋值是对赋值运算符的扩展,可以将属性/值从对象/数组中取出,赋值给其他变量. 一.数组的解构赋值 1.基本用法 只要等号两边的模式相同,左边的变量就会被赋予对应的值. let [a, [[b], ...

  8. 【ES6 】ES6 解构赋值--数组解构赋值

    定义 ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构 数组的解构赋值 以前,为变量赋值,只能直接指定值. let a = 1; let b = 2; let c = 3; ...

  9. ES6解构赋值详解

    文章转载自:http://www.zhufengpeixun.cn/article/167 解构赋值(destructuring assignment)语法是一个 Javascript 表达式,这种语 ...

随机推荐

  1. sdut 2605 A^X mod P

    http://acm.sdut.edu.cn/sdutoj/problem.php?action=showproblem&problemid=2605 这个题卡的是优化,直观解法是在求x^y时 ...

  2. Code First Migrations更新数据库结构的具体步骤

    一.打开程序包管理器控制台 当你的实体模型与数据库架构不一致时,引发以下错误:The model backingthe 'SchoolContext' context has changed sinc ...

  3. visualSVN server库迁移

    首先,VisualSVN Server Manager,包含两个路径,一个是安装路径,例如本机:C:\Program Files\VisualSVN Server,一个是库路径,例如本机:C:\Rep ...

  4. struts中的数据校验

    1.struts中如何进行数据校验 在每一个Action类中,数据校验一般都写在业务方法中,比如login().register()等.struts提供了数据校验功能.每个继承自ActionSuppo ...

  5. Processon 一款基于HTML5的在线作图工具

    CSDN的蒋涛不久前在微博上评价说ProcessOn是web版的visio,出于好奇私下对ProcessOn进行了一番研究.最后发现无论是在用户体验上,还是在技术上,ProcessOn都比微软的Vis ...

  6. java中利用JFrame创建窗体 【转】

    1. 一个简单的swing public class Test(){ public static void main(String[] args){ JFrame frame = new JFrame ...

  7. windows操作系统日常使用

    快捷键使用: 看实例,学经验,我看行. 1.人体学输入设备被禁用怎么办(鼠标被禁用.键盘被禁用) 有一天脑子抽风,把鼠标给禁用了.以前不常用快捷键,这下必须学学怎么使用快捷键了,现在记下来,防止以后脑 ...

  8. 同是url参数传进来的值,String类型就用getAttribute获取不到,只能用getParameter获取,而int就两个都可以这是为什么?

    这是因为int的属性是id,这是在被放到modeldriver中的user所具有的属性,传递过来的参数如果和user的属性重名,struts2的有类似beanutil之类的工具会自动封装参数,这时候用 ...

  9. iOS中nil、Nil、NULL、NSNull详解(转)

    ObjC 里面的几个空值符号经常会差点把我搞死,这些基础的东西一点要弄清楚才行,以提高码农的基本素质. nil nil 是 ObjC 对象的字面空值,对应 id 类型的对象,或者使用 @interfa ...

  10. java generic type

    java generic type: 类型安全.类型参数化.不需要强制转换