美文网首页
变量的解构赋值

变量的解构赋值

作者: _花 | 来源:发表于2017-11-01 10:59 被阅读0次

    1.数组的结构赋值

    从数组或者对象里面提取值,对变量赋值,这被称为解构赋值。

    1)模式匹配

    var [ a , b , c ] = [ 1 , 2 , 3 ]    //模式匹配   a=1,b=2,c=3

    let [ x , y , ...z] = [ 'a' ]        //x='a',y=undefined,z=[ ]

    2)解构不成功

    如果解构不成功,变量的值就等于undefined,例如:

    let  [ x , y ] = [ ]  

    let [ x , y ] = [1]

    3)解构不完全

    let [ x , y ] = [ 1 , 2 , 3 ]  //x=1,y=2

    4)默认值

    [ x , y = 1] = [ 2 ]   //  x = 2 ,y = 1

    [ x , y = 1] = [ 2 , undefined ]  // x = 2 ,y = 1

    [ x , y = 1] = [ 2 , null ]  // x = 2 ,y = null   注意:如果一个数组成员不严格等于undefined,默认值是不会生效的。

    2.对象的结构赋值

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

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

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

    1)对于对象的解构赋值,变量的声明和赋值是同时进行的,所以一旦赋值的变量以前生命果就会报错(指用let , const 申明的变量)。

    let foo;

    let { foo } = { foo : 1}       //  这样写是错的

    2)默认值

    var { x , y = 5} = { x : 1}    //x =1 , y = 5

    其他情况和数组的相同

    3)错误情况

    var { foo : { bar } }  = { baz : ' baz'  }      //foo为

    var x;

    { x } = { x : 1}      //错误大括号不可放在行首 ,应该改为({ x } = { x : 1})

    3.字符串的解构赋值

    const  [ a , b , c ,d , e ] = ' hello '  // a = 'h'   ..............

    let { length : len } = ' hello '    // len = 5;

    4.圆括号问题

    建议:只要可以,就不要在模式中放置圆括号

    变量声明语句中不能带圆括号;

    函数参数中不能带圆括号;

    不能将整个模式或者嵌套模式里的一层放在圆括号中;

    相关文章

      网友评论

          本文标题:变量的解构赋值

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