8-1 扩展运算符与rest参数

36 阅读1分钟

扩展运算符:把数组或者类数组展开成用逗号隔开的值 rest参数:把逗号隔开的值组合成一个数组

扩展运算符

function foo(a, b, c){
  console.log(a, b, c)
}
let arr = [1, 2, 3]
foo(...arr)

合并数组

let arr1 = [1, 2, 3]
let arr2 = [4, 5, 6]
// ES5 Array.prototype.push.apply(arr1, arr2)
// ES6
arr1.push(...arr2)
console.log(arr1)

// 打散用逗号隔开

let str = 'juejin'
var arr = [...str]
console.log(arr)

rest 参数

function foo(x, y, z){
  console.log(arguments)// 并不是真正意义的数组而是而数组
  // ES5 的写法
  // let sum = 0
  // Array.prototype.forEach.call(arguments, function(item){
  //   sum += item
  // })
  // return sum
  let sum = 0
  Array.from(arguments).forEach(function(item)){
    sum += 0
  }
  return sum
}
console.log(foo(1, 2))
console.log(foo(1, 2, 3))

// 通过... 就直接把当前这个参数变成一个数组,这个就叫做rest 运算符,或者剩余运算符

function foo(...args){
  console.log(args)
  let sum = 0
  args.forEach(function(item){
    sum += item
  })
  return item
}
console.log(foo(1, 2))
console.log(foo(1, 2, 3))
function foo(x, ...args){
  console.log(x)    // 1
  console.log(args) // 剩余的参数都存在args里面
}
foo(1, 2, 3)
foo(1, 2, 3, 4)

解构

let [x, ...y] = [1, 2, 3]
console.log(x) // 1
console.log(y) // 2 3