반응형
아래의 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"));
반응형
'개발 > JavaScript' 카테고리의 다른 글
자바스크립트 프로미스 - Promise all, race (0) | 2021.07.31 |
---|---|
자바스크립트 프로미스 - Promise resolve, reject (0) | 2021.07.29 |
자바스크립트 - 단축 속성명 (Shorthand Property Names) (0) | 2021.07.25 |
파일 선택(input)과 버튼 연결하기 (1) | 2021.06.27 |
JavaScript test setting (0) | 2021.02.19 |
댓글