es6结构赋值--数组

/**
 * 数组 的解构赋值
 */
{
  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)
}
相关文章
相关标签/搜索