function sum(a, b, c) {
let s = 0;
for (let i=0; i < arguments.length; i++){
s += arguments[i];
}
return s;
}
const abcSum = sum(10, 20, 30, 40)
console.log(abcSum) // 100
sum 함수에서 매개변수를 몇 개 받도록 되어있는지와 상관없이 arguments에는 호출 당시의 모든 인자가 다 담긴다.
따라서 sum 함수에 매개변수(a, b, c)는 필요 없게 된다.
// 매개변수 X
function sum() {
let s = 0;
for (let i=0; i < arguments.length; i++){
s += arguments[i];
}
return s;
}
const abcSum = sum(10, 20, 30, 40)
하지만 위와 같은 경우에는 함수 시그니처에 인수와 관련된 정보가 부족하다.
function sum(...args) {
let s = 0;
for (let i=0; i<args.length; i++){
s += args[i];
}
return s;
}
const abcSum = sum(10, 20, 30, 40)
위의 경우 인자의 개수 상관없이 함수가 실행된다. 또한 함수 시그니처에도 인수와 관련된 정보를 담고 있어 가시성이 좋아졌다.
// a, b는 필수값
function sum(a, b, ...args) {
let s = 0;
for (let i=0; i<args.length; i++){
s += args[i];
}
return s;
}
const abcSum = sum(10, 20, 30, 40)