Skip to content

Latest commit

 

History

History
120 lines (72 loc) · 3.41 KB

解构赋值.md

File metadata and controls

120 lines (72 loc) · 3.41 KB

title: 解构赋值 speaker: 刘经济 transition: cards files: /css/common.css

[slide]

ESMAScript 6 之 解构赋值

演讲者:刘经济

[slide]

#解构赋值 {:&.flexbox.vleft}

####按照一定的模式,从数组或对象中提取值,对变量进行赋值。

1、数组解构赋值

2、对象解构赋值

3、字符串解构赋值

4、数值和布尔值的解构赋值

5、函数参数的解构赋值

[slide] #数组解构赋值 {:&.flexbox.vleft}

1、按照数组对应的位置,对变量进行赋值

2、只要等号两边的模式相同,左边的变量就会被赋予对应的值

3、如果解构不成功,变量被赋予undefined

4、解构赋值可以有默认值,解构赋值采用===进行比较,如果不严格等于undefined,默认值不会生效

5、默认值如是表达式,此表达式是惰性求值,即只有在用到的时候才会求值

6、默认值可以引用其他的变量,但变量必须已经声明

[slide] #对象解构赋值 {:&.flexbox.vleft}

1、对象解构赋值是按照属性名进行赋值,变量必须与属性同名才能解构赋值成功

2、如果变量名和属性名不一致,必须把变量作为属性值先初始化给同属性名相同的属性名

3、对象解构赋值的本质是:找到同名属性,然后把对应的属性值付给相应的变量,真正赋值的属性值即value而不是key

4、如果采用第二条解构赋值,用let或者const时,变量不能是声明过的

5、可以嵌套

6、可以有默认值,但要严格等于undefined

7、嵌套的解构赋值,如果父解构赋值失败,则会报错

8、对已经声明过的变量解构赋值,则保证首行第一个有效字符不是{而是(即把解构赋值放在()里

9、允许左侧对象里不包括任何变量,语法不报错但是属于垃圾代码毫无用处

10、可以把现有的对象的方法,直接解构赋值给变量

[slide] #字符串解构赋值 {:&.flexbox.vleft}

1、可以进行类数组解构赋值

2、可以进行对象(length)解构赋值

[slide] #数值和布尔值的解构赋值 {:&.flexbox.vleft}

1、等号右侧是数值或者布尔值时,先把值转换为对象然后在进行解构赋值

2、解构赋值的规则是:如果不是对象先转换为对象在进行解构赋值

3、null和undefined不能转换为对象,故不能对其进行解构赋值

[slide] #函数参数的解构赋值

[slide] #解构赋值的问题 {:&.flexbox.vleft}

1、变量声明语句中,圆括号()会引起歧义,强烈建议不要在模式中使用圆括号

2、函数参数中,模式不能带圆括号

3、不能把整个模式或模式中的一层放在圆括号里

4、在非变量声明语句中,把变量放在圆括号中使用是正确的,这是唯一能在解构赋值中使用圆括号的情况

[slide] #用途 {:&.flexbox.vleft}

1、交换变量

2、从函数返回多个值

3、函数参数的定义

4、提取json中的数据

5、函数参数的默认值

6、变量map解构

7、输入模块指定的方法