function timeToGoHome(speed, distance) {
let time = distance / speed;
return time;
}
timeToGoHome(20, 100);
우리는 이렇게 함수명 () 안에 매개변수(Parameters)를 통해 전달받은 인자(arguments)을 사용합니다.
즉 speed와 distance는 인자(因子)를 무엇을 받느냐에 따라서 다르기 때문에 매개변수(媒介變數)입니다. 변할 수 있다는 말입니다. 함수가 실행되기 위해서는 인자가 들어가야 되니까요.
만약에 하기와 같은 함수가 있다고 가정합시다.
function getMaxNum(num){
return Math.max(num)
}
getMaxNum(3,5,6,7,8)
getMaxNum(4,5,6,7,8,9,10)
이 함수의 답은 무엇일까요? 3 or 4 입니다. 전혀 Math.max()
메소드에 맞지 않은 해답이 나옵니다. num라는 매개변수로 변수하나만 설정했기때문에 3이나 4밖에 받아 들이지 않았습니다. 저렇게 인자의 길이가 유동적인 경우라면 어떻게 해야될까요?
Rest Parameters란 상기 케이스 처럼 인자가 유동적일때 유용한 함수입니다. 매개변수앞에 ...만 붙혀주면 끝나죠.
function getMaxNum(...num){
return Math.max(...num)
}
getMaxNum(3,5,6,7,8) -> 8
getMaxNum(4,5,6,7,8,9,10) -> 10
이렇게 고쳐 준다면 정상 적인 우리가 원하는 답을 출력받을수 있습니다.
function getSumNum(...num){
return num.reduce(function(acc, cur){
return acc + cur;
});
}
getSumNum(3,5,6,7,8) -> 29
이런 경우에는 ...이 필요없습니다.
이 비슷(?)한 것으로 arguments 라는 키워드를 사용하는 방법이 있는데
function getMaxNum(){
console.log(arguments)
}
getMaxNum(2,3,4) --> Arguments(3) [2, 3, 4, callee: ƒ, Symbol(Symbol.iterator): ƒ]
요런식으로 출력합니다 이 경우에는 배열의 메소드는 사용할수 없습니다.