zoukankan      html  css  js  c++  java
  • 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;   //直接报错
    
  • 相关阅读:
    有赞移动Crash平台建设
    软件测试创新之路
    手把手教你用Python实现智能推荐算法
    接口测试--参数实现MD5加密签名规则
    重置一发LCT模板
    LOJ #2131. 「NOI2015」寿司晚宴
    LOJ #3119「CTS2019 | CTSC2019」随机立方体 (容斥)
    2019牛客暑期多校训练营(第九场)
    20190815模拟赛
    zhengrui集训笔记2
  • 原文地址:https://www.cnblogs.com/mcad/p/8422864.html
Copyright © 2011-2022 走看看