rest參數是JavaScript中用于收集函數多余參數為數組的語法特性。它使用三個點…加變量名的形式,如function example(…args),將傳入的多個參數自動收集為數組,便于操作。應用場景包括:1. 處理不確定數量的參數,如實現靈活的加法函數;2. 與解構結合使用,提取數組剩余元素;3. 函數代理時轉發參數,避免手動傳遞。注意事項有:必須是函數最后一個參數、不能和arguments混用、在箭頭函數中需依賴rest參數。掌握后可提升處理多參數場景的效率和代碼清晰度。
在JavaScript中,rest參數是一種語法特性,用來表示函數中不確定數量的參數。它允許我們將一個不定數量的參數表示為一個數組,簡化了對多個參數的操作。
什么是rest參數?
簡單來說,rest參數就是用三個點 … 加上一個變量名的形式,把多余的參數“收集”起來,變成一個數組。例如:
function example(...args) { console.log(args); } example(1, 2, 3); // 輸出 [1, 2, 3]
在這個例子中,…args 就是rest參數。無論你傳多少個參數進去,都會被自動放進一個數組里。
注意:一個函數中只能有一個rest參數,并且它必須是最后一個參數。
rest參數的實際應用場景
1. 處理不確定數量的參數
當你寫一個函數,不知道用戶會傳幾個參數時,使用rest參數比 arguments 對象更直觀、方便。
比如,寫一個加法函數:
function sum(...numbers) { return numbers.reduce((total, num) => total + num, 0); } sum(1, 2, 3); // 6 sum(5, 10); // 15
相比以前用 arguments,現在代碼更清晰也更容易操作。
2. 和解構結合使用
rest參數也常用于數組或對象的解構賦值中,比如:
const [first, ...rest] = [1, 2, 3, 4]; console.log(rest); // [2, 3, 4]
這里,first 是第一個元素,剩下的都放到 rest 數組中。
3. 函數代理(轉發參數)
有時候你想定義一個函數,把所有參數原樣傳給另一個函數,這時候可以用rest參數配合展開運算符(spread)一起使用:
function log(...args) { console.log('收到參數:', args); anotherFunction(...args); }
這樣可以避免手動一個個傳遞參數,非常靈活。
常見錯誤和注意事項
-
rest參數必須是最后一個參數
下面這種寫法是錯的:function wrong(a, ...rest, b) {} // ? 報錯
-
不能和 arguments 混用
在箭頭函數中沒有 arguments,所以必須用rest參數代替。