타닥타닥 개발자의 일상

[JS/자바스크립트 ] 함수의 디폴트 밸류, 디폴트 값 본문

코딩 기록/JavaScript

[JS/자바스크립트 ] 함수의 디폴트 밸류, 디폴트 값

NomadHaven 2023. 6. 19. 16:09

 

함수를 사용할때는 보통 함수에 대입할 파라미터(매개변)를 넣는다.

파라미터를 넣어야지 본인이 얻고 싶은 값이 나오기 때문이다.

 

하지만 파라미터를 대입하지 않아도 기본적으로 출력되는 값을 설정할수 있다.

바로 함수의 default 값 설정을사용하면 된다.

 

아래의 createBooking 이란 함수를 보자,

 

'use strict';

const bookings = [];

const createBooking = function ( flightNum, numPassengers = 1, price = 199 * numPassengers
) {
  const booking = {
   	flightNum,
    numPassengers,
    price,
  };
  
  console.log(booking);
  bookings.push(booking);
};

해당 함수는 매개변수 flightNum(비행시간), numPassengers(승객 인원수), price(비행기 티켓 가격) 을 매개변수로 받는다.

매개변수로 받은 세가지의 값은 booking 이란 구조체에 추가되고 해당 구조체는 다시 bookings라는 배열에 추가된다.

 

여기서 주목할 점은 defualt 값이 설정된 numPassengers 와 price 라는 두가지 매개변수다.

해당 파라미터는 함수가 호출되기도 전에 이미 numPassengers =1 , price= 199*numpassengers 와 같이 값이 대입되어있다.

 

즉  createBooking 함수를 호출할때 해당 파라미터를 따로 대입하지 않아도 기본 값이 1, 199*(1)으로 설정되어 있다는 말이다.

 

그렇다면 default 값이 설정되어 있는 함수를 호출시 어던 결과가 나오는지 알아보자.

 

코드

createBooking('LH123'); 
createBooking('LH123', 2, 800); 
createBooking('LH123', 5);
출력결과
{flightNum: 'LH123', numPassengers: 1, price: 199}
{flightNum: 'LH123', numPassengers: 2, price: 800}
{flightNum: 'LH123', numPassengers: 5, price: 995}

createBooking('LH123');  는 flightNum의 매개변수 값만 주었기 때문에 나머지 매개변수는 기본값 1, 199가 출력되었다.
createBooking('LH123', 2, 800); 는 모든 매개변수의 값을 주었기 때문에 대입한 그대로 계산되고 출력 되었다.
createBooking('LH123', 5); 는 flightNum과 numPassengers 값만 주었고 나머지  price 값는 기본값으로 계산되어 출력됐다.

 

만약 flightNum(비행 번호)와 티켓 가격 정보만 넘겨주고 승객수는 넘겨줄수 없을땐 어떻게 해야될까?

승객수를 입력하는 매개변수 자리에 undefined를 입력하면 호출한 함수가 오류없이 출력된다.

createBooking('LH123', undefined, 1000); // 승객수를 넘겨주기 싫을땐 undefined으로 적용.

위의 경우에는 

{flightNum: 'LH123', numPassengers: 1, price: 995} 와 같은 결과가 출력된다.

Comments