fe-weekly-questions icon indicating copy to clipboard operation
fe-weekly-questions copied to clipboard

剩余参数和 arguments 对象的区别是什么?

Open LuckyWinty opened this issue 4 years ago • 2 comments

LuckyWinty avatar Dec 06 '20 16:12 LuckyWinty

  1. 剩余参数只包含那些没有对应形参的实参(可以是参数的 部分),而 arguments 对象包含了传给函数的所有实参(是参数的全部)
  2. arguments 对象不是一个真实的数组,而剩余参数是真实的 Array 实例 也就是说,能够在它上面直接使用所有的数组方法,比如 sort、map、forEach、pop
  3. arguments 对象还有一些附加的属性(如 callee 属性)
  4. 如果想在 arguments 对象上使用数组方法,首先要将它转换为真实的数组,比如使用 [].slice.call(arguments)

LuckyWinty avatar Dec 06 '20 16:12 LuckyWinty

补充第四条

  1. Array.from(arguments)
  2. [... arguments]
  3. Array.protoType.slice.call(arguments)

SiHao24 avatar Dec 07 '20 10:12 SiHao24