All'alba vincerò

At dawn, I will win!

Javascript

[JS] 기본값 매개변수(default parameters) / 나머지 매개변수(rest parameters)

나디아 Nadia 2024. 7. 23. 23:48

📌 기본값 매개변수(default parameters)

function 함수명(변수 = 기본값) {
                           ...
}

 

: 함수를 정의할 때 매개변수의 기본 값을 설정해 놓는 기능

  • 함수 호출 시 인수를 제공하지 않았을 때 기본 값이 자동으로 사용된다.
  • 함수 호출 시 평가된다.
    • 함수가 호출될 때마다 새 객체가 생성됨

 

 

 

✨ 변수의 기본값 설정하는 방법

 

1. 기본 설정

const randomNumber = function(min, max) {
  if (min === undefined) {
    min = 0;
  }
  
  if (max === undefined) {
    max = 10;
  }

  return Math.round(Math.random() * (max - min)) + min;
};

let n1 = randomNumber();
console.log(n1, n1 >= 0 && n1 <= 10);

let n2 = randomNumber(5);
console.log(n2, n2 >= 5 && n2 <= 10);

let n3 = randomNumber(5, 7);
console.log(n3, n3 >= 5 && n3 <= 7);


 

 

2. 기본값 매개변수 사용

const randomNumber = (min = 0, max = 10) => {
  return Math.round(Math.random() * (max - min)) + min;
};

let n1 = randomNumber();
console.log(n1, n1 >= 0 && n1 <= 10); // [ 5, true ]

let n2 = randomNumber(5);
console.log(n2, n2 >= 5 && n2 <= 10); // [ 6, true ]

let n3 = randomNumber(5, 7);
console.log(n3, n3 >= 5 && n3 <= 7); // [ 6, true ]

 

 

 

3. nullish 연산자 사용

const randomNumber = (min, max) => {
  // nullish 연산자 사용 (null | undefined)
  min = min ?? 0; 
  max = max ?? 10;

  return Math.round(Math.random() * (max - min)) + min;
};

let n1 = randomNumber();
console.log(n1, n1 >= 0 && n1 <= 10); // [ 8, true ]

let n2 = randomNumber(5);
console.log(n2, n2 >= 5 && n2 <= 10); // [ 8, true ]

let n3 = randomNumber(5, 7);
console.log(n3, n3 >= 5 && n3 <= 7); // [ 6, true ]

 

 


📌 나머지 매개변수(rest parameters)

function 함수명(변수1, 변수2, ...변수3) {
                              ...
}

 

: 함수의 마지막 매개변수에 `...`를 사용하여 남은 인수들을 배열로 받는 기능

  • 함수 호출 시 전달된 나머지 모든 인수를 배열로 수집 
  • 마지막 매개변수만 나머지 매개변수(rest parameters)로 설정 ⭕
  • 함수가 몇 개의 인수를 받을지 사전에 정확히 알 수 없는 경우에 유용 
  • 나머지 매개변수는 배열이므로 배열 메서드 사용 가능

function showName(firstName, lastName, ...titles) {
  alert( firstName + ' ' + lastName ); // Bora Lee

  // titles = ["Software Engineer", "Researcher"]
  // 나머지 인수들은 배열 titles의 요소가 됩니다.
  
  alert( titles[0] ); // Software Engineer
  alert( titles[1] ); // Researcher
  alert( titles.length ); // 2
}

showName("Bora", "Lee", "Software Engineer", "Researcher");

 

 

 

예제 1

function sumAll(...args) { 
  let sum = 0;

  for (let arg of args) sum += arg;

  return sum;
}

alert( sumAll(1) ); // 1
alert( sumAll(1, 2) ); // 3
alert( sumAll(1, 2, 3) ); // 6

 

 


 

 

📢 나머지 매개변수   vs   arguments 객체(유사 배열)

나머지 매개변수(Rest Parameters) arguments 객체
일반 배열 유사 배열 객체(array-like object)
배열 메서드 사용 ⭕ 배열 메서드 사용 ❌
👉 배열로 변환해야 함 
`...매개변수` 이전에 정의한 매개변수는 포함  `...매개변수` 이전에 정의한 매개변수도 포함 

 

 

* arguments 객체

 

 


 

 

기본값 매개변수 - JavaScript | MDN

기본값 함수 매개변수 (default function parameter)를 사용하면 값이 전달되지 않거나 undefined인 경우 명명된 매개변수를 기본값으로 초기화할 수 있습니다.

developer.mozilla.org

 

 

나머지 매개변수 - JavaScript | MDN

나머지 매개변수 구문을 사용하면 함수가 정해지지 않은 수의 매개변수를 배열로 받을 수 있습니다. JavaScript에서 가변항 함수를 표현할 때 사용합니다.

developer.mozilla.org

 

 

arguments 객체 - JavaScript | MDN

arguments 객체는 함수에 전달된 인수에 해당하는 Array 형태의 객체입니다.

developer.mozilla.org

 

 

나머지 매개변수와 전개 구문

 

ko.javascript.info