본문 바로가기
개발/JavaScript

자바스크립트 - 매개변수 기본값 (Default Function Parameter)

by 피로물든딸기 2021. 7. 26.
반응형

자바스크립트 전체 링크

 

아래의 db에 key에 대응되는 data가 있다고 가정하자.

그리고 getData를 이용해 db의 data를 가져온다.

const db = {
    key1: "data1",
    key2: "data2",
    key3: "data3", 
    undefined: "data error",
}

function getData(key) {
    return db[key];
}

console.log(getData("key1"));
console.log(getData("key2"));
console.log(getData());
console.log(getData("key3"));

 

세 번째의 getData에 변수를 넣지 않았으므로, key = undefined가 된다.

그래서 db["undefined"]가 호출되어 data error를 얻게 된다.

 

이 경우, db["undefined"]는 정상적인 호출이 아니므로, error를 throw하고 싶다.

function getData(key) {
    if(key === undefined) throw new Error('data error');
    return db[key];
}

error가 던져졌으므로 data3은 출력되지 않았다.

 

조금 더 가독성을 좋게하려면 매개변수 기본값을 이용하여 아래와 같이 작성하는 것이 가능하다.

function makeError() {
    throw new Error('data error');
}

function getData(key = makeError()) {
    return db[key];
}

 

getData()가 호출되면 key는 'undefined'가 되므로 매개변수 기본값인 makeError()가 되고, 실행된다.

makeError가 에러를 발생시키므로 data3은 호출되지 않고, 위와 같은 결과를 얻는다.

 

최종 코드는 아래와 같다.

const db = {
    key1: "data1",
    key2: "data2",
    key3: "data3", 
    undefined: "data error",
}

function makeError() {
    throw new Error('data error');
}

function getData(key = makeError()) {
    return db[key];
}

console.log(getData("key1"));
console.log(getData("key2"));
console.log(getData());
console.log(getData("key3"));
반응형

댓글