개발나라 스용공주

[JavaScript] 단락 평가 본문

WEB/JavaScript

[JavaScript] 단락 평가

스용공주 2024. 11. 30. 01:47
728x90
728x90

이번 글은 단락 평가에 대한 글이다.


 

[ 단락평가란? ]

단락 평가란 조건문을 이용하지 않고도 어떠한 함수를 호출하지 않도록 방지해주거나 어떤 값을 계산하지 않도록 제한해주는 것이다.

단락 평가의 구조는 첫번째 피연산자의 값만 이용해 연산의 결과를 확정할 수 있다면 두번째 피연산자에 접근하지 않는다.

 


 

[ &&(and)와 ||(or) ]

단락 평가를 이해하기 위해선 논리연산자 &&(and)와 ||(or)를 먼저 이해해야한다.

 

1) &&(and)

  • true와 true => true
  • true와 fasle => false
  • false와 true => false
  • false와 false = > false

2) ||(or)

  • true와 true => true
  • true와 false => true
  • false와 true => true
  • false와 false => false

 


 

 

[ 단락평가의 활용 ]

따라서 논리연산자의 구조를 보면 단락평가는 다음과 같은 상황에서 활용된다.

  • false값을 가진 것에 &&이 오면 뒤에 어떤 값이 와도 결과는 false
  • true값을 가진 것에 ||이 오면 뒤에 어떤 값이 와도 결과는 true

 

아래 예제를 보면 person이 undefined이기 때문에 person.name까지 도달하지 않는다. 따라서 변수 name은 undefined가 된다. 그리고 name은 falsy한 값인 undefined을 가지고 있고 || 이후에 있는 값은 문자열로 truthy한 값이므로 문자열 "person의 값이 없음" 이 반환된다.

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

printName();

결과값

 

반면 아래 코드와 같이 name에 황서영이라는 값을 넣어주게 되면 person이 truthy한 값이 되므로 person.name의 값까지 읽게 되어 name에 해당 값이 들어간다. 따라서 변수 name이 truthy한 값이 되어 name의 값이 출력된다.

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

printName({ name: "황서영" });

결과값

 

 

 


728x90
728x90
Comments