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. 判断数据库内容,在页面显示自定义数据case when

    判断数据库内容,在页面显示自定义数据 case when...then ...else...end 比如:数据库内容是这样: 通过sql语句判断,数据库的name字段,内容是月桂的,显示嫦娥,其他的显 ...

  2. jquery判断多选框是否选中

    if($("#xieyi").is(":checked")){ alert('选中'); }else{ alert('没有选中') }

  3. 戴文的Linux内核专题:06配置内核(2)

    转自Linux中国 这一部分我们讲配置内核IRQ子系统.中断请求(IRQ)是硬件发给处理器的一个信号,它暂时停止一个正在运行的程序并允许一个特殊的程序占用CPU运行. 这个目录中的第一个问题属于内核特 ...

  4. 百胜集团李磊:BPM实现业务流程全过程无缝链接

    作为全球最大的餐饮企业之一,百胜集团在形成规模化连锁经营效应的同时,战略地利用信息化手段,强化管理和运营水平,打造企业的核心竞争力.通过流程梳理,百胜集团实现了以规模化.规范化.信息化和现代化为主题的 ...

  5. ToolBar+DrawerLayout + NavigationView

    http://www.jianshu.com/p/9471b87f2c61 很好的博客可以瞅瞅 <android.support.design.widget.NavigationView and ...

  6. iOS:图片拉伸不变形技巧

    方法: 假设图片为60*24 CGFloat top = image.height*0.5-1; // 顶端盖高度 CGFloat bottom = top ; // 底端盖高度 CGFloat le ...

  7. LoadImage函数问题

    loadimage函数加载图片类型 Value Meaning IMAGE_BITMAP Loads a bitmap. IMAGE_CURSOR Loads a cursor. IMAGE_ICON ...

  8. 程序员最爱 Mac、JS 是最热门技术

    概况: 今年,有超过5万名开发者向我们分享了他们是谁,做什么工作,以及他们的成果.通过本文,你将看到有史以来最为全面的一次开发者情况调查的结果. 每8秒钟,就会有一位开发者在Stack Overflo ...

  9. Note_Master-Detail Application(iOS template)_04_ YJYMasterViewController.h

    //YJYMasterViewController.h #import <UIKit/UIKit.h> @classYJYDetailViewController; #import < ...

  10. 新浪微博sdk bug

    最近在做一个 iOS 的 cocos2d-x 项目接入新浪微博 SDK 的时候被“坑”了,最后终于顺利的解决了.发现网上也有不少人遇到一样的问题,但是能找到的数量有限的解决办法写得都不详细,很难让人理 ...