变量的解构赋值

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.圆括号问题

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

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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.数组的解构赋值 2.对象的解构赋值 3.字符串的解构赋值 4.数值和布尔值的解构赋值 5.函数参数的解构赋值 ...
    卞卞村长L阅读 4,386评论 0 0
  • 数组的解构赋值 基本用法 ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destru...
    呼呼哥阅读 3,110评论 0 3
  • 本文通过学习阮一峰的博客,外加自己的理解,整理了一下我对js变量的解构赋值的理解。 数组的解构赋值 对象的解构赋值...
    宋乐怡阅读 3,427评论 0 2
  • 一:数组的解构赋值 ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructu...
    野小宝阅读 1,716评论 0 0
  • 01、数组的解构赋值ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destruct...
    夜幕小草阅读 2,642评论 0 1