단락 회로 평가 (단축 평가)

조뮁·2022년 8월 25일
0

React-이론

목록 보기
3/12

단락 회로 평가

  • 논리연산자의 특성을 이용한 문법
  • 왼쪽에서 오른쪽으로 연산하게 되는 논리연산자의 연산 순서를 이용
  • 피연산자가 Truty , Falsy한 값일 경우에도 사용 가능

A && B

: A와 B가 모두 True 일때만 True를 반환
: A가 false라면 뒤에 있는 피연산자는 연산하지 않고 False를 반환하여 연산 종료
: A가 true라면 두 번째 피연산자 값을 return한 후 연산 종료

A || B

: A와 B 둘 중 하나만 True이면 True를 반환
: A가 True라면 뒤에 있는 피연산자는 연산하지 않고 True 반환하여 연산 종료
: A가 false라면 두 번째 피연산자 값을 반환하고 연산 종료

논리연산자

  • && : and
  • || : or
  • ! : not

  • 예시 : 객체 여부를 판별하여 이름을 출력하는 함수 작성
    (1) 기본 함수
const getName = (person) => {
  if(!person){
    return '객체가 아닙니다.'
  }
  return person.name;
}

let person;
const name = getname(person);
console.log(name);

(2) && 사용

const getName = (person) => {
  return person && person.name;
  // person 은 undefined로 falsy한 값임.
  // person.name 까지 도달하지 않고, 앞의 falsy한 값을 그대로 return한 후 종료함
  // 문제 : falsy한 값 자체를 반환하기 때문에, person 값 자체인 undefined, null이 출력됨
  
}

let person;
const name = getname(person);
console.log(name);  // undefined

(3)

const getName = (person) => {
  const name = person && person.name;
  // && 양 쪽이 모두 Truty하기 때문에, 뒤에 있는 연산값인 person.name의 값을 반환함
  return name  || '객체가 아닙니다'
  // name이 falsy한 값이면 객체가 아닙니다.가 들어감
  // name이 truty한 값이면 바로 그 값이 반환되고 연산이 종료됨
}

let person;
let person2 = {name:'달봉이'};
const name = getName(person);
console.log(name);
// 객체가 아닙니다

const name = getName(person2);
console.log(name);
// 달봉이

0개의 댓글