美文网首页
解构赋值

解构赋值

作者: 暖年的咆哮 | 来源:发表于2018-11-27 15:44 被阅读0次

    一、数组的解构赋值

    1.完全解构

    只要等号两边的模式相同,左边的变量就会被赋予对应的值,如果解构不成功,变量的值就等于undefined。
    数组的解构赋值是根据数组元素排列次序进行解构赋值的

    let [x,y,z] = [1,[2,3],4]
    console.log(y) //[2,3]
    

    2、不完全解构

    等号左边的模式只匹配一部分的等号右边的数组,这种情况下,解构依然成功,但是只会在相对应的位置解构成功。

    let [x,[y],z] = [1,[2,3],4]
    console.log(y) //2
    

    3、默认值

        解构赋值允许指定默认值
    
        let [foo = true] = [];
        foo // true;
    

    ES6内部使用严格相等运算符(‘===’)判断一个位置是否有值,所以,如果一个数组成员不严格等于undefined,默认值是不会发生变化的

    let [x,y = 'b'] = ['a'];
        // x = 'a', y = 'b'
    let [x,y = 'b'] = ['a',undefined];
        // x = 'a', y = 'b'
    

    如果一个数组成员是null,默认值就不会生效,因为null不严格等于undefined。

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

    如果默认值是一个表达式,那么这个表达式是惰性求值的,即,只有再用到的时候才会执行求值。

        function f() {
             console.log("aaa");
         }
         let [x = f()] = [1];
    //因为x可以取到值,所以函数f()根本不会执行,上面的代码其实等价于下面的代码:
        let x
        if([1][0] === undefined) {
            x = f();
        } else {
            x = [1][0];
        }
    

    相关文章

      网友评论

          本文标题:解构赋值

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