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;

  • 相关阅读:
    糖果传递
    流水作业调度(贪心) Johnson算法
    [CQOI2015]任务查询系统
    [CQOI2009]叶子的染色
    P4906 小奔关闹钟
    P1131 [ZJOI2007]时态同步
    P1270 “访问”美术馆
    P1272 重建道路
    [HNOI/AHOI2018]道路
    P1776 宝物筛选_NOI导刊2010提高(02)
  • 原文地址:https://www.cnblogs.com/grhino/p/8547013.html
Copyright © 2011-2022 走看看