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. 내이름