本文共 959 字,大约阅读时间需要 3 分钟。
模式匹配:只要等号两边的模式相同,左边的变量就会被赋予对应的值。
let [a, b, c] = [1, 2, 3];
嵌套数组进行解构:
let [foo, [[bar], baz]] = [1, [[2], 3]];foo // 1bar // 2baz // 3let [ , , third] = ["foo", "bar", "baz"];third // "baz"let [x, , y] = [1, 2, 3];x // 1y // 3let [head, ...tail] = [1, 2, 3, 4];head // 1tail // [2, 3, 4]let [x, y, ...z] = ['a'];x // "a"y // undefinedz // []
不完全解构:等号左边的模式,只匹配一部分的等号右边的数组。
let [x, y] = [1, 2, 3];x // 1y // 2let [a, [b], d] = [1, [2, 3], 4];a // 1b // 2d // 4
只要某种数据结构具有 Iterator 接口,都可以采用数组形式的解构赋值:
Document
解构不仅可以用于数组,还可以用于对象。
Document
结果:aaa,bbb
简写:
Document
结果:
hello
world
数组本质是特殊的对象,因此可以对数组进行对象属性的解构。
如下
Document
结果为:
1
3
字符串也可以解构赋值。这是因为此时,字符串被转换成了一个类似数组的对象。
Document
解构赋值时,如果等号右边是数值和布尔值,则会先转为对象。
let {toString: s} = 123;s === Number.prototype.toString // truelet {toString: s} = true;s === Boolean.prototype.toString // true
Document
结果:
转载地址:http://czxbx.baihongyu.com/