ES6中rest引數詳細講解

R-B發表於2021-09-09

(1) Rest 引數接受函式的多餘引數,組成一個陣列,放在形參的最後,形式如下:

function func(a, b, ...theArgs){    // ...}

(2) Rest引數和arguments物件的區別:

  • rest引數只包括那些沒有給出名稱的引數,arguments包含所有引數

  • arguments 物件不是真正的陣列,而rest 引數是陣列例項,可以直接應用sort, map, forEach, pop等方法

  • arguments 物件擁有一些自己額外的功能

(3) 從 arguments 轉向陣列

Rest 引數簡化了使用 arguments 獲取多餘引數的方法

// arguments 方法function func(a, b){    var args = Array.prototype.slice.call(arguments);    console.log(args)
}

func(1,2)// Rest 方法function func(a, b, ...args){    // ...}

注意,rest 引數之後不能再有其他引數(即,只能是最後一個引數),否則會報錯

function func(a, ...b, c) {    // ...}// Rest parameter must be last formal parameter

函式的 length 屬性,不包括rest引數

(function(a) {}).length     // 1(function(...a) {}).length      // 0(function(a, b, ...c)).length   // 2

(4) Rest引數可以被結構(通俗一點,將rest引數的資料解析後一一對應)不要忘記引數用[]括起來,因為它是陣列

function f(...[a, b, c]) {  
  return a + b + c;  
}  
  
f(1)          //NaN 因為只傳遞一個值,其實需要三個值  f(1, 2, 3)    // 6  f(1, 2, 3, 4) // 6 (第四值沒有與之對應的變數名)




轉載:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4560/viewspace-2822337/,如需轉載,請註明出處,否則將追究法律責任。

相關文章