/** * 数组 的解构赋值 */ { 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) }