# 变量解构赋值
- 数组的解构赋值
ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构
<script>
var arr = [1, 2, 3];
//var a = arr[0],b = arr[1], c = arr[2];
[a, b, c] = arr;
console.log(a, b, c);
</script>
上面代码表示,可以从数组中提取值,按照对应位置
,对变量赋值。
本质上,这种写法属于“模式匹配”,只要等号两边的模式相同,左边的变量就会被赋予对应的值。
如果解构失败,变量的值等于 undefined。
<script>
let [foo, [[bar], baz]] = [1, [[2], 3]];
foo; // 1
bar; // 2
baz; // 3
let [, , third] = ["foo", "bar", "baz"];
third; // "baz"
let [x, , y] = [1, 2, 3];
x; // 1
y; // 3
let [x, y, z] = ["a"];
x; // a
y; // undefined
z; // undefined
</script>
- 对象的解构赋值 解构不仅可以用于数组,还可以用于对象。对象的解构与数组有一个重要的不同。数组的元素是按次序排列的,变量的取值由它的位置决定;而对象的属性没有次序,变量必须与属性同名,才能取到正确的值。如果解构失败,变量的值等于 undefined。
<script>
let { bar, foo } = { foo: "aaa", bar: "bbb" };
foo; // "aaa"
bar; // "bbb"
let { baz } = { foo: "aaa", bar: "bbb" };
baz; // undefined
</script>