[JavaScript] 단락회로 평가
자바스크립트의 단락회로 평가는 논리 연산자의 특성을 활용한다.
자바스크립트의 논리연산자를 보면 아래와 같다.
// and 연산자는 두 값이 모두 true일 때 true를 반환한다.
console.log(true && true);
>>> true
// or 연산자는 두 값 중 하나만 true이면 true를 반환한다.
console.log(true || false);
>>> true
// not 연산자는 true로 변환 가능한 값에 false를 반환한다.
console.log(!true)
>>> false
단일회로 평가는 단순히 true / false만이 아니라, truthy / flasy를 평가할 때 유용하게 사용할 수 있다.
const getName = (person) => {
if (!person) {
return "객체가 아닙니다.";
}
return person.name;
};
let person;
const name = getName(person);
console.log(name);
>>> "객체가 아닙니다."
위와 같은 콜백함수를 아래와 같이 단락회로 평가를 응용해서 사용할 수 있다.
const getName = (person) => {
return person && person.name;
// 둘 중 하나만 falsy하면 falsy한 값을 return한다.
};
let person;
const name = getName(person);
console.log(name);
// falsy한 값에 특정한 값을 반환하고 싶으면 아래와 같이 사용한다.
const getName = (person) => {
const name = person && person.name;
// name의 값이 truethy한지 falsy한지 비교한다.
// 이 부분에서 name은 빈 문자열의 falsy한 undefined가 된다.
return name || "객체가 아닙니다.";
// falsy하기 때문에 name의 값이 아닌 || 뒤의 falsy한 값인 "객체가 아닙니다."를 반환한다.
};
let person;
const name = getName(person);
console.log(name);
>>> "객체가 아닙니다."
반응형
'자바스크립트 [JavaScript]' 카테고리의 다른 글
[JavaScript] 자바스크립트 동기 작업과 비동기 작업 (17) | 2022.03.03 |
---|---|
[JavaScript] 자바스크립트 spread 연산자 (27) | 2022.03.03 |
[JavaScript] 자바스크립트 비구조화 할당 (17) | 2022.03.03 |
[JavaScript] 자바스크립트 삼항연산자 (34) | 2022.03.03 |
const를 썼어도 object 안의 무엇은 바뀐다. (36) | 2021.12.29 |
댓글