ECMAScript6 解耦赋值
目录
一、变量的解耦赋值
1、解耦赋值是什么
ECMAScript 6允许按照一定模式从数组或对象中提取值,对变量进行赋值。这种赋值方式被称为“解耦赋值”( Destructuring)。
ES5变量赋值:
var a = 10
var b = 100
var c = 1000
console.log(a,b,c)//10 100 1000
ES6变量赋值:
let [a,b,c] = [1,2,3]
console.log(a,b,c)//1 2 3
从指定的数组或对象中提取值,为指定的变量进行赋值
-
语法结构:
var/let [变量名1,变量名2···] = 数组或对象
注意:变量的索引值对应值的索引值
ES6的解耦赋值,本质上属于模式匹配。赋值运算符两边的模式相同,左边的变量会被赋予对应位置的值
2、解耦赋值失败
解耦赋值失败不等于失败
案例1:
let [a] = []
console.log(a) //undefined
变量的索引值应该对应值的索引值
案例2:
let [m,n] = [1]
console.log(m,n) //1 undefined
不想失败的话,定义变量数量跟值的数量保持一致
案例3:
let [x,y] = [1,undefined]
console.log(x,y) //1 undefined
3、不完全解耦赋值
let [a,b] = [1,2,3]
console.log(a,b) //1 2
4、默认值
当解耦赋值失败,变量的默认值为undefined
默认值:指的是在解耦赋值失败时,重写undefined默认值
let [a = true] = []
console.log(a) //true
let [a = true] = [100]
console.log(a) //100
ES6底层将为变量赋值的值与undefined进行比较(全等于),指定的默认值生效
let [m, n = 100] = [10, undefined]
console.log(m, n);