#擴(kuò)充符複製數(shù)組我能理解,但用於函數(shù)傳遞參數(shù)的不懂
#如上,為什麼函數(shù)參數(shù)加上擴(kuò)充運(yùn)算子以後,就能接受若干個參數(shù)?
fn(...arg)要怎么理解
擁有18年軟件開發(fā)和IT教學(xué)經(jīng)驗。曾任多家上市公司技術(shù)總監(jiān)、架構(gòu)師、項目經(jīng)理、高級軟件工程師等職務(wù)。 網(wǎng)絡(luò)人氣名人講師,...
函數(shù)定義的時候, 這應(yīng)該叫剩餘參數(shù).
如果函數(shù)的最後一個命名參數(shù)以...為前綴,則在函數(shù)被調(diào)用時,該形參會成為一個數(shù)組,數(shù)組中的元素都是傳遞給該函數(shù)的多出來的實參的值。
看 MDN 詳細(xì)解釋:
https://developer.mozilla.org...
你可以先看一下這個栗子
這裡的...arg其實是取得arguments的值,所以你方法可以改寫成這樣
function fn(){
var arg = [...arguments];
console.log(...arg);
}
官方解釋:
Bind trailing parameters to an array.
用在函數(shù)參數(shù)中,就是將此處開始的參數(shù)轉(zhuǎn)換成一個陣列。
fn(...args)//所有參數(shù)變?yōu)閿?shù)組
fn(a, ...args)//從第二個參數(shù)變?yōu)閿?shù)組
函數(shù)的形參本來就會保存到argument這個類別數(shù)組裡邊,...運(yùn)算子可以把類別數(shù)組轉(zhuǎn)成數(shù)組
你可以理解為,
fn(...arg) 是將參數(shù)的參數(shù),全部放置在arg這個數(shù)組裡.不管你調(diào)這函數(shù)時,傳多少個參數(shù),都可以由arg來獲取.
函數(shù)參數(shù)可以透過arguments這個類別數(shù)組物件獲得,你傳入的任意多參數(shù)本質(zhì)上在函數(shù)內(nèi)部就是以類別數(shù)組物件存在的,所以加上擴(kuò)展運(yùn)算符,只是把這個類別數(shù)組變成了參數(shù)序列