美文网首页
ES6——解构赋值

ES6——解构赋值

作者: roylai | 来源:发表于2017-09-02 16:10 被阅读0次

    解构赋值

    解构赋值说白了就是一种模式匹配,等号左右两边对应变量和值。解构赋值可以是完全解构赋值,即每个值与右边一一对应,也可以是不完全解构赋值,即只取等号右边值的一部分。解构赋值可以对变量取默认值。

    解构赋值取默认值的条件是,对应值不全等于undefined,ES6全都是用 === 即全等来判定是否为对等

    数组的解构赋值

    数组的解构赋值比较简单,即[]两边匹配即可

    let [x,y] = [1,2] // x =1,y=2
    let [z,m=1] = [1] // x = 1,m=1
    let [a,[b,c],d] = [1,[2,3],4] // a = 1,b=2,c=3,d=4
    

    对象的解构赋值

    对象的解构赋值是有模式的

    let {foo,foo:{a},foo:{a:[x,y,z=4]}} = {foo:{a:[1,2]}}
    // foo:{a:[1,2,3]}
    // a:[1,2,3]
    // x=1,y=2,z=4
    

    每个逗号都是一个模式,变量的属性值必须跟对象的属性值相一致,否则无法成功为 undefined

    对象的解构本质上是下面的简写

    let {foo:foo,baz:baz} = {foo:1,baz:2}
    // foo:1,baz:2
    

    对于已经声明的变量进行赋值解构,要注意花括号的方式,系统会把它当作块级作用域,所以我们要非匹配模式的部分增加括号。

    let foo
    {foo} = {foo:1}
    // 报错 Uncaught SyntaxError
    let foo 
    ({foo} = {foo:1})
    // foo : 1
    

    数组本质是特殊的对象,所以可以这样取值:

    let arr = [1, 2, 3];
    let {0 : first, [arr.length - 1] : last} = arr;
    first // 1
    last // 3
    

    字符串的解构

    在字符串的解构过程中,首先会把字符串转变成数组,当然,会有一个length属性。

    数值和布尔值

    赋值解构只要等号右边不是数组跟对象,都会优先转换为对象

    用途

    交换变量的值

    [x,y] = [y,x]
    

    从函数返回多个值

    函数参数的定义和默认值

    提取JSON的值

    遍历map解构

    指定模块的输出方法

    相关文章

      网友评论

          本文标题:ES6——解构赋值

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