Blog/JavaScript
단락 회로 평가
용디
2022. 2. 11. 11:06
🤷♀️ 단락회로 평가란?
- 왼쪽에서 오른쪽으로 연산을 하는 논리 연산자의 특성(연산 순서)을 활용 하는 방법
- 뒤에 위치한 피 연산자를 확인 할 필요 없이 그냥 연산을 끝내버리는 것
- Truthy(참같은 값)와 Falsy(거짓같은 값) 개념도 적용
논리 연산자의 종류
구분 | 연산식 | 결과 | 설명 | |
&& (AND) |
true | true | true | 피 연산자 모두 true일때만 true 반환 |
true | false | false | ||
false | true | false | ||
false | false | false | ||
|| (OR) |
true | false | true | 피 연산자 중 하나만 true여도 true 반환 |
true | false | true | ||
false | true | true | ||
false | false | false | ||
! (NOT) |
true | false | 피 연산자의 논리값을 바꿈 |
|
false | true |
대표적인 Truthy & Falsy
Truthy (참같은 값) | Falsy (거짓같은 값) |
"문자열" | null |
[] | undefined |
{} | 0 / -0 |
43 / -43 (숫자) | NaN |
Infinity | "" (빈문자) |
👾 기본코드
const getName = (person) => {
if (!person) {
return "객체 아님";
}
return person.name;
};
let person;
const name = getName(person);
console.log(name);
😮 예시코드1 (단락 회로 평가 기법 적용)
const getName = (person) => { // 3
const name = person && person.name; // 4. Falsy인데 && 연산자 니까 뒤에 안보고 false
return name || "객체 아님"; //5. Falsy 들어왔는데 || 니까 뒤에까지 봐야함
};
let person; // 1. undefined이니까 Falsy
const name = getName(person); // 2
console.log(name); // 6. 객체 아님
😮 예시코드2 (단락 회로 평가 기법 적용)
const getName = (person) => { // 3
const name = person && person.name; // 4. Truthy이고 person.name도 있으니까 뒤에 값을 반환
return name || "객체 아님"; // 5. Truthy이고 || 니까 name만 보고 리턴
};
let person = { name: "내이름" }; // 1. 문자열 이니까 Truthy
const name = getName(person); // 2
console.log(name); // 6. 내이름