I can understand the expansion character for copying arrays, but I don’t understand the one used to pass parameters to functions
As above, why can function parameters accept several parameters after adding the expansion operator?
fn(...arg)要怎么理解
擁有18年軟件開發(fā)和IT教學經(jīng)驗。曾任多家上市公司技術總監(jiān)、架構師、項目經(jīng)理、高級軟件工程師等職務。 網(wǎng)絡人氣名人講師,...
When defining a function, this should be called the remaining parameters.
If the last named parameter of the function is prefixed with..., then when the function is called, the formal parameter will become an array, and the elements in the array will be the values ??of the extra actual parameters passed to the function.
See MDN for detailed explanation:
https://developer.mozilla.org...
You can take a look at this chestnut first
The...arg here actually gets the value of arguments, so your method can be rewritten like this
function fn(){
var arg = [...arguments];
console.log(...arg);
}
Official explanation:
Bind trailing parameters to an array.
Used in function parameters, it converts the parameters starting here into an array.
fn(...args)//所有參數(shù)變?yōu)閿?shù)組
fn(a, ...args)//從第二個參數(shù)變?yōu)閿?shù)組
The formal parameters of the function will be saved in the argument class array. The... operator can convert the class array into an array
You can understand that
fn(...arg) places all the parameters of the parameters in the arg array. No matter how many parameters you pass when you call this function, they can be obtained by arg.
Function parameters can be obtained through the array-like object arguments. Any multiple parameters you pass in essentially exist as array-like objects inside the function, so adding the spread operator just turns this array-like object into a parameter sequence