/** * 數組 的解構賦值 */ { let [foo, [[bar], baz]] = [1, [[2], 3]] console.log(foo, bar, baz) //1 2 3 let [ , , third] = [1, 2, 3] console.log(third) // 3 let [a, ...b] = [1, 2, 3, 4] console.log(a, b) // 1 [2, 3, 4] } // 若是解構不成功,變量的值就是 undefined { let [a, b] = [1] console.log(a, b) // 1 undefined } // 不徹底解構 { let arr = [1, [2, 3], 4] let [a, [b], c] = arr console.log(a, b, c) // 1 2 4 let [d, e, f] = arr console.log(d, e, f) //1 [2, 3] 4 } // set 解構也能夠用數組進行解構 { let [a, b, c] = new Set([11, 22, 33]) console.log(a, b, c) } // 只要是有 Interator 接口的數據結構 均可以用數組進行解構 // 解構賦值的 默認值 { let [a = 2, b = 4] = [] console.log(a, b) // 2 4 // 只有當數組的值是嚴格的 undefined ,默認值纔會生效 === } // 默認值若是是表達式, 那麼表達式是惰性求值的, 只有在用到的時候纔會求職, { function f () { return 'value'; } let [a = f()] = [1] console.log(a) }