• es6笔记(3) 变量的解构赋值


    基本概念

    本质上是一种匹配模式,只要等号两边的模式相同,那么左边的变量就可以被赋予对应的值。

    // 以往定义接个变量的时候,需要这样
    var a = 1,
        b = 2,
        c = 3;
    // 使用ES6解构赋值,可以这样写
    let [a,b,c] = [1,2,3];
    

    解构赋值的几种方式

    1. 数组的解构赋值

    let [foo,[[bar],baz]] =[1,[[2],3]];
    console.log(foo,bar,baz); //输出1,2,3
    

    解构赋值是可以使用缺省的方式用于占位

    let [,,c] = [1,2,3];
    console.log(c); //3
    

    如果解构赋值时,没有找到对应的值会怎样?

    let [a] = [];
    console.log(a); //解构失败 undefined;
    
    let [y = 1] = [];
    console.log(y); //因为第二个等号,解构失败。输出 1
    

    2. 对象的解构赋值

    我们知道,对象和数组不太一样,1对象是有属性的,2对象是无序的。那么变量的解构赋值如何进行呢?

     //=======变量名,与属性名一致==========
     //此时会按照变量名,
     //与右侧的属性名匹配,如果一致就赋值。
     let {a,b}={b:'bbbb',a:'aaaa'}; 
     console.log(a); // aaaa
     
     //=======变量名,与属性名不一致=========
     let {a:b} ={a:1};
     console.log(b); // 1
     console.log(a); // 报错
     //真正被赋值的是变量,而不是前面属性
    

    3. 基本类型的解构赋值

    字符串在某些情况下会被当成数组使用

    let [j,d] = "12";
    console.log(j,d); //1 2
    

    直接获得字符串的长度,通过prototype。

    let {length:len} = 'jd';
    console.log(len); //2
    

    可以直接拿到类型prototype上的方法

    let{toString:ts} = 1;
    let{toString:bs} = true;
    
    console.log(ts);  //输出  Number.prototype.toString 方法
    console.log(bs);  //输出  Boolean.prototype.toString 方法
    

    null 和 undefined不能解构赋值

      let a = undefined;   //直接报错
    
  • 相关阅读:
    peudoclass与pseudo的相同点与不同点
    第一个页面
    自我介绍
    Virtual IP Address 学习记录
    OpenStack 学习记录
    Dubbo学习记录 MAC
    售前 银行
    log4j2 学习记录 Pattern Layout
    Zookeeper学习记录 mac下安装部署
    P2695 骑士的工作
  • 原文地址:https://www.cnblogs.com/mcad/p/8422864.html
Copyright © 2020-2023  润新知