• Javascript

[Javascript] 단락 평가 (논리 연산식)

Suro_1123 2024. 10. 19. 13:58

 

Short-circuit Evaluation


 

 

Javascript 논리 연산식에서 단락 평가라는것이 존재한다.

일단 간단한 논리 연산식을 살펴보자.

 

function returnFalse() {
  console.log("False 함수");
  return false;
}

function returnTrue() {
  console.log("True 함수");
  return true;
}

console.log(returnFalse() && returnTrue()); 
/* 결과 :
False 함수
false
*/

 

결과값

console.log에 AND 연산자를 사용하여 false와 true를 반환하는 함수를 호출했는데

두 번째인 returnTrue 함수 자체는 실행이 안됐다. 

그 이유는 단락 평가 때문이다.

 

😳 단락 평가란 ?

 

논리 연산식에서 첫 번째 피연산자의 값 만으로도 두 번째 피연산자 값 자체에 접근을 안하는 것을 말한다.

 

위 예시처럼 AND 연산자는 첫 번째 피연산자가 False면 무조건 False를 반환해야 하기 때문에 뒤에 있는 피연산자들의 값 자체에 접근을 안한것이다 

 

그렇다면 OR은 첫 번째 피연산자가 True 무조건 True를 반환하기 때문에 뒤에 있는 피연산자들은 접근을 안한다.

 

 

 

👀 활용 예시

function printName(person) {
  const name = person && person.name;
  console.log(name || "person의 값이 없음");
}

printName(); // person의 값이 없음
printName({ name: "김철수" }); // 김철수

 

1. name이라는 변수에 논리 연산식으로 person 객체의 값이 없으면 Falsy한 값이 들어가며 뒤 person.name은 무시된다.

 

2. 만약 person의 객체에 name이 있다면 person이 Truthy한 값이기 때문에 person.name의 값이 name에 들어간다.

 

3. console.log에는 name의 값이 true면 뒤 "person의 값이 없음"은 무시되고 false면 뒤 피연산자의 값이 실행된다.