LuckyWinty / fe-weekly-questions

A pro to record some interview questions every week...
MIT License
341 stars 34 forks source link

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

Open LuckyWinty opened 3 years ago

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

补充第四条

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