zoukankan      html  css  js  c++  java
  • ECMA Script 6新特性之解构赋值

    1.基本概念用法

     1.1解构赋值:ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值。  

    var a = 1;
    var b = 2;
    var c = 3;
    /*上述赋值语句用解构赋值为*/
    var [a,b,c] = [1,2,3];

     1.2上述的解构发生在等号左右模式相同的情况下,如果等号两边的模式不一致,解构可能会不成功;

    /*当变量多于值个数或无值时,解构失败*/
    var [foo] = [];   
    var [a,b] = [1];
    /*当变量少于值个数,不完全解构*/
    let [a,b] = [1,2,3];   //可解构,a = 1, b = 2
    let [a,[b],c] = [1,[2,3],4] //可解构,a = 1, b = 2,c=4
    /*等号右边不是数组时,报错,下述代码全部都会报错*/
    let [foo] = 10;
    let [foo] = true;
    let [foo] = null;
    let [foo] = {};

     1.3解构赋值可指定默认值:

    var [foo = true] = [];  //foo = true;
    var [a,b = 2] = [1];    //a = 1;b = 2;

     另需注意,指定默认值的数组成员必须是严格等于undefined,否则默认值不会生效;

    /**/
    var [x = 1] = [undefined];  //x =1
    var [x = 1] = [null];           //x=null
    var [x ,y= 1]= [2];             //y = 1

    如果默认值是一个表达式,那么这个表达式是惰性求值的,即只有在用到的时候,才会求值;

    function f() {
      console.log('aaa');
    }
    
    let [x = f()] = [1];
    /*上述代码中因为x能取到值,因此f()函数不会执行*/

    默认值可以引用解构赋值的其他变量,但该变量必须已经声明;

    let [x = 1, y = x] = [];     // x=1; y=1
    let [x = 1, y = x] = [2];    // x=2; y=2
    let [x = 1, y = x] = [1, 2]; // x=1; y=2
    let [x = y, y = 1] = [];     // ReferenceError
    
    /*最后一个赋值,x用到默认值y时,y还没有声明。因此报错*/
    作者:LearnAndGet
    如果觉得阅读本文没有浪费您的时间,请点击推荐支持~
    本文部分内容参考自互联网,如有侵权,请及时联系本人删除
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利.
  • 相关阅读:
    IIS Express中添加MIME
    js立即执行函数IIFE(Immediatelyinvokedfunctionexpression)的几种写法
    笑话一则
    字符串操作类 NET代码积累之一
    UrlRewriter使用详解
    压缩和解压缩的方法 from Byte[]
    C#日期格式化
    JavaScript模拟进度条
    让visual studio 2005 自动为类加版权
    godaddy免费空间完美安装部署dedecms
  • 原文地址:https://www.cnblogs.com/LearnAndGet/p/6249612.html
Copyright © 2011-2022 走看看