美文网首页
数组的解构赋值(笔记)

数组的解构赋值(笔记)

作者: 灰灰_82a6 | 来源:发表于2019-04-19 16:51 被阅读0次

    基本语法

    1.数组按照对应位置,对变量赋值

    let [a,b,c]=[3,2,1]; //a=3,b=2,c=1
    let [ , , third] = ["foo", "bar", "baz"]; //third="baz"
    

    2.扩展运算符 ...
    扩展运算符会把后面剩余的都解构

    let [x,...y] = [1, 2, 3]; //a=1,y=[2,3]
    //如果扩展运算符没有解构到值,变量默认赋值为空数组
    let [x, y, ...z] = ['a']; 
    x // "a"
    y // undefined
    z // []
    

    后面再跟变量,会报错

    let [x,...y,z] = [1, 2, 3]; //error
    

    3.如果解构不成功,会赋值为undefined

    let [foo] = []; //foo=undefined
    let [bar, foo] = [1]; //foo=undefined
    

    默认值

    1.解构赋值可以设置默认值,当数组对应的位置上没有值(解构undefined),默认值才会生效。

    let [x = 1] = [undefined];
    x // 1
    
    let [x = 1] = [null];
    x // null
    

    2.默认值是表达式的话为惰性求值,即用到了才会求值。

    let [x = fn()] = [1]; //函数fn不会自动调用,因为x已经取到值了,不需要用默认值
    

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

    let [x = 1, y = x] = [2];    // x=2; y=2
    let [x = y, y = 1] = [];     // ReferenceError: y is not defined
    

    相关文章

      网友评论

          本文标题:数组的解构赋值(笔记)

          本文链接:https://www.haomeiwen.com/subject/yafcgqtx.html