在開發過程中我們經常要用到一些臨時變量對數據進行一些特殊處理,比如我們要在臨時變量用完后主動釋放內存,所以當臨時變量數量較多時,整體代碼會變得冗余。
let a = []
let b = []
let c = []
a.push(1)
// dosomeThing
let a = null
let b = null
let c = null
於是可以使用一些方法解決這一問題:
let a, b, c
a = b = c = []
a.push(1)
console.log(b)
// 1
b = c = null
可以發現變量 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)
// []
a = b = c = null
