JavaScript

기본값 매개변수(Default parameter) - JavaScript

파란배개 2020. 11. 27. 11:38

기본값 함수 매개변수 (Default parameter)

값이 없거나 undefined가 전달될 경우 이름붙은 매개변수를 기본값으로 초기화할 수 있다.

function multiply(a, b = 1) {
  return a * b;
}

multiply(5, 2)          // 10
multiply(5)             // 5
multiply(5, undefined)  // 5

 

자바스크립트에서 함수의 매개변수는 기본적으로 'undefined'이지만 어떤 때는 기본값을 특정 값으로 정해야 할 때가 있는데 그 때 기본값 함수 매개변수를 유용하게 사용할 수 있다.

 

 

파이선과는 달리 자바스크립트에서는 기본 인수가 호출 시에 평가되므로 함수가 생성될 때마다 새로운 객체가 생성된다.

function append(value, array = []) {
  array.push(value)
  return array
}

append(1)  // [1]
append(2)  // [1, 2]가 아니라 [2]가 나온다(새로운 객체가 만들어졌기 때문).


//이것은 함수나 변수에서도 마찬가지이다.
function callSomething(thing = something()) {
  return thing 
}

let numberOfTimesCalled = 0
function something(){
  numberOfTimesCalled += 1
  return numberOfTimesCalled
}

callSomething()  // 1
callSomething()  // 2

 

 

앞쪽 매개변수를 뒷쪽의 매개변수 기본값에 사용할 수 있다.

function greet(name, greeting, message = greeting + ' ' + name) {
  return [name, greeting, message]
}

greet('David', 'Hi')                      // ["David", "Hi", "HiDavid"]
greet('David', 'Hi', 'Happy Birthday!')   // ["David", "Hi", "Happy Birthday!"]

 

 

주의! 함수 내부에 선언된 함수와 변수들은 매개변수 기본값 초기화시에 참조할 수 없다.

(유효범위 효과 (Scope Effects)를 주의)

//기본값 매개변수는 자식 스코프를 참조할 수 없다!
function f(a = go()) { // `f`가 호출 되면 `ReferenceError`가 발생한다.
  function go() { return ':P' }
}

//자식 스코프에서 선언된 변수는 부모스코프에서 사용할 수 없다!
function f(a, b = () => console.log(a)) {
  let a = 1
  b() // `undefined`를 인쇄한다.
} 

 

 

참고 MDN

developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Functions/Default_parameters

 

기본값 매개변수

기본값 함수 매개변수 (default function parameter)를 사용하면 값이 없거나 undefined가 전달될 경우 이름붙은 매개변수를 기본값으로 초기화할 수 있습니다.

developer.mozilla.org

 

'JavaScript' 카테고리의 다른 글

in 연산자 - JavaScript  (0) 2020.11.27
구조 분해 할당(Destructing assginment) - JavaScript  (0) 2020.11.27
arguments 객체 - JavaScript  (0) 2020.11.27
Rest 파라미터(...args) - JavaScript  (1) 2020.11.27
import와 export - ES6  (0) 2020.11.23