JS中的rest參數(shù)是什么?如何使用?

rest參數(shù)是JavaScript中用于收集函數(shù)多余參數(shù)為數(shù)組的語法特性。它使用三個點…加變量名的形式,如function example(…args),將傳入的多個參數(shù)自動收集為數(shù)組,便于操作。應用場景包括:1. 處理不確定數(shù)量的參數(shù),如實現(xiàn)靈活的加法函數(shù);2. 與解構(gòu)結(jié)合使用,提取數(shù)組剩余元素;3. 函數(shù)代理時轉(zhuǎn)發(fā)參數(shù),避免手動傳遞。注意事項有:必須是函數(shù)最后一個參數(shù)、不能和arguments混用、在箭頭函數(shù)中需依賴rest參數(shù)。掌握后可提升處理多參數(shù)場景的效率和代碼清晰度。

JS中的rest參數(shù)是什么?如何使用?

在JavaScript中,rest參數(shù)是一種語法特性,用來表示函數(shù)中不確定數(shù)量的參數(shù)。它允許我們將一個不定數(shù)量的參數(shù)表示為一個數(shù)組,簡化了對多個參數(shù)的操作。


什么是rest參數(shù)?

簡單來說,rest參數(shù)就是用三個點 … 加上一個變量名的形式,把多余的參數(shù)“收集”起來,變成一個數(shù)組。例如:

function example(...args) {   console.log(args); } example(1, 2, 3); // 輸出 [1, 2, 3]

在這個例子中,…args 就是rest參數(shù)。無論你傳多少個參數(shù)進去,都會被自動放進一個數(shù)組里。

注意:一個函數(shù)中只能有一個rest參數(shù),并且它必須是最后一個參數(shù)。


rest參數(shù)的實際應用場景

1. 處理不確定數(shù)量的參數(shù)

當你寫一個函數(shù),不知道用戶會傳幾個參數(shù)時,使用rest參數(shù)比 arguments 對象更直觀、方便。

比如,寫一個加法函數(shù):

function sum(...numbers) {   return numbers.reduce((total, num) => total + num, 0); } sum(1, 2, 3); // 6 sum(5, 10);   // 15

相比以前用 arguments,現(xiàn)在代碼更清晰也更容易操作。

2. 和解構(gòu)結(jié)合使用

rest參數(shù)也常用于數(shù)組或?qū)ο蟮慕鈽?gòu)賦值中,比如:

const [first, ...rest] = [1, 2, 3, 4]; console.log(rest); // [2, 3, 4]

這里,first 是第一個元素,剩下的都放到 rest 數(shù)組中。

3. 函數(shù)代理(轉(zhuǎn)發(fā)參數(shù))

有時候你想定義一個函數(shù),把所有參數(shù)原樣傳給另一個函數(shù),這時候可以用rest參數(shù)配合展開運算符(spread)一起使用:

function log(...args) {   console.log('收到參數(shù):', args);   anotherFunction(...args); }

這樣可以避免手動一個個傳遞參數(shù),非常靈活。


常見錯誤和注意事項

  • rest參數(shù)必須是最后一個參數(shù)
    下面這種寫法是錯的:

    function wrong(a, ...rest, b) {} // ? 報錯
  • 不能和 arguments 混用
    在箭頭函數(shù)中沒有 arguments,所以必須用rest參數(shù)代替。

  • 不是真正的數(shù)組,但像數(shù)組一樣操作
    rest參數(shù)本身是一個真正的數(shù)組,可以直接使用 .map、.Filter 等方法。


基本上就這些。掌握rest參數(shù)之后,你會發(fā)現(xiàn)它在處理多參數(shù)場景時非常實用,尤其是在封裝工具函數(shù)或者需要靈活接口的地方。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點贊13 分享