zoukankan      html  css  js  c++  java
  • js es6 解构赋值

    解构赋值:es6允许按照一定的模式,从数组或对象中提取值

    let [a,b,c] = [1,2,3];
    let {a,b}= {a:1,b:2};


    对象

    let {a,b}= {b:1,a:2} //输出2,1,即找属性名,不管什么位置


    数组
    例子1:(完全解构)

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

    例子2:(不完全解构)

    let [a,[b],c] = [1,[2,3],function(){}];
    console.log(a)//1 [0]
    console.log(b)//2 [1][0]
    console.log(c)//function(){} [2]

    这里的b,就是不完全解构的体现

    不完全解构

    let[a,b]=[1] //a=1,b=undefind
    
    
    let [a] =true //匹配不成功,报错

    ----------------解构赋值的默认值-----------------------------
    怎么判断的?
    如果右边的值===undefined,就取默认值

    let [a=1,b=2]=[];
    console.log(a)//1 
    console.log(b)//2
    
    
    function add(a=0,b=0){ //ab默认值
    console.log(a+b)
    }
    
    add() //0

    设计默认值时,是惰性求值,即在用到的时候才执行默认值

    function fn(){
    console.log("fn")
    }
    
    let [a=fn()]=[1] //输出1

    数组例子1

    let[a=b,b=2]=[];//输出a,b时报错,因为a是b的暂时性死区,a拿不到b

    对象例子2

    let{a=1} = {a:2}//输出2
    let {PI} =Math //找到Math对象下的PI,let PI=Math.PI


    --------------------------------
    除了设置默认值时,对象可以用,作为匹配规则
    l

    et obj ={
    aaaa:1,
    bbbb:2
    }
    let{aaaa:a,bbbb:b}=obj //输出a=1,b=2;aaaa报错,等号时是设置默认值.

    --------------冒号模式,---------------
    按照aaaa来匹配,实际使用aaaa的值,obj.aaaa的值aaaa.a的值匹配

    例子
    let{a,b} = {a:1,b:2}  相当于  let{a:a,b:b} = {a:1,b:2}


    如果let{a:ac,b:ad} = {a:1,b:2}   则    ac=1,ad=2;


    即默认值设定为let{a:ac=0,b:ad=0} = {a:1,b:2},则   ac=1,ad=2;

  • 相关阅读:
    Step by step Dynamics CRM 2013安装
    SQL Server 2012 Managed Service Account
    Step by step SQL Server 2012的安装
    Step by step 活动目录中添加一个子域
    Step by step 如何创建一个新森林
    向活动目录中添加一个子域
    活动目录的信任关系
    RAID 概述
    DNS 正向查找与反向查找
    Microsoft Dynamics CRM 2013 and 2011 Update Rollups and Service Packs
  • 原文地址:https://www.cnblogs.com/grhino/p/8547013.html
Copyright © 2011-2022 走看看