ES6:使用解构赋值仅用一行定义多个相同的数组,且指向堆不同(解构赋值)
在开发过程中我们经常会用到空间去替代时间复杂度的写法,所以当临时变量数量较多时,整体代码会变得冗余。
let a = []
let b = []
let c = []
a.push(1)
// dosomeThing
于是可以使用一些方法解决这一问题:
let a, b, c
a = b = c = []
a.push(1)
console.log(b)
// 1
然而发现变量 a b c 的指向的堆相同,导致其中一个变量发生改变另外两个变量也会发生一样的改变。
我们需要更好的方法来达到这一目的,使自己的代码不会那么 noob。
“ ES6:解构赋值 ”
解构赋值
解构赋值是对赋值运算符的扩展。
他是一种针对数组或者对象进行模式匹配,然后对其中的变量进行赋值。
在代码书写上简洁且易读,语义更加清晰明了;也方便了复杂对象中数据字段获取。
runoob上的例子:
let [a, b, c] = [1, 2, 3]
a++
console.log(a, b, c)
// 223
由此我们可以知道,通过解构赋值,我们可以让数组中的索引指向对应的索引,通过索引一个个为变量 a b c 赋值,因此等式右边每个元素所指向的存储空间都是不同的。
let [a, b, c] = [[], [], []]
a.push(1)
// doSomething
console.log(b)
// []