解构赋值

一、数组的解构赋值

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];
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容