1. 전달인자(arguments)의 길이가 유동적이라면?
  • Rest Parameter를 이용해 매개변수를 지정해줌 ( 인자를 배열로 받음 )
  • 매개변수가 배열의 형태로 전달됨
function getMaxNum(...nums) {
  console.log(nums)
}
getMaxNum(1,2,3,4,5) // [1, 2, 3, 4, 5]

function getMaxNum2(...nums) {
  return nums.reduce(function(acc,cur){
    if(acc < cur){
        return cur;
    }
    return acc;
  })
}
getMaxNum2(1,2,3,4,5) // 5
  1. 매개변수(parameter)의 길이가 유동적이라면?
  • Spread Operator ( 배열을 하나하나 인자로 풀어서 사용 )
let arr = [1,10,33,222,3333,4444]
Math.max(...arr) // 4444
function getNumber() {
  console.log(arguments)
}
getNumber(0,1,2,3,4)
  1. 다만, 이 arguments 객체는 배열같아 보이지만, 배열이 아닙니다. (이를 유사배열이라고 부름)
    image.png

  2. 매개변수(parameter)에 기본값을 넣어주고 싶은 경우?

  • Default Parameter를 할당해줄 수 있음.
  • 문자열/숫자/객체 등 어떠한 타입도 가능함.
function timeToGoHome(distance, speed = 20) {
  return distance / speed;
}
timeToGoHome(100) // 5
function timeToGoHome(distance = 100, speed) {
  return distance / speed;
}
timeToGoHome(undefined,20) // 5
// 중간에 기본 매개변수가 들어가는 경우, undefined를 넘겨줬을 때 기본값으로 처리함.

< 매개변수 기본값 설정 옛날 방식 >

function timeToGoHome(distance, speed) {
  distance = distance || 3000;
  return distance / speed;
}
timeToGoHome(undefined,1)