函數的arguments為什么不是數組?如何轉化成數組?


arguments本身並不能調用數組方法,它是一個另外一種對象類型,屬性從0開始排,依次為0,1,2...最后還有callee和length屬性。我們也把這樣的對象稱為類數組

1. Array.prototype.slice.call()

function sum(a, b) {
  let args = Array.prototype.slice.call(arguments);
  console.log(args.reduce((sum, cur) => sum + cur));//args可以調用數組原生的方法啦
}
sum(1, 2);//3

2. Array.from()

function sum(a, b) {
  let args = Array.from(arguments);
  console.log(args.reduce((sum, cur) => sum + cur));//args可以調用數組原生的方法啦
}
sum(1, 2);//3

3. ES6展開運算符

function sum(a, b) {
  let args = [...arguments];
  console.log(args.reduce((sum, cur) => sum + cur));//args可以調用數組原生的方法啦
}
sum(1, 2);//3

4. 利用concat+apply

function sum(a, b) {
  let args = Array.prototype.concat.apply([], arguments);//apply方法會把第二個參數展開
  console.log(args.reduce((sum, cur) => sum + cur));//args可以調用數組原生的方法啦
}
sum(1, 2);//3

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM