# 变量解构赋值

  • 数组的解构赋值

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>
上次更新: 10/29/2019, 6:04:16 PM