단락회로 평가

minho·2022년 2월 6일
0

&&, ||를 통해 객체인지 아닌지 쉽게 구분할 수 있다.

객체 판별하기

let getName = (person) => {
  if(!person) return "객체가 아닙니다.";
  return person.name;
}

let person;
console.log(getName(person));

person이 Falthy이므로 조건문에 부합하여 return값을 반환한다.
그래서 객체가 아닌지 판별한 수 있다.

그러나 person값이 일반 리터럴 값이라면?

let getName = (person) => {
  if(!person) return "객체가 아닙니다.";
  return person.name;
}

let person=9;
console.log(getName(person));

결과값은 undefined가 나온다.
즉 Falthy값 이외에는 객체인지 아닌지 구분할 수 없다.


&&,||를 통한 객체 판별

let getName = (person) => {
    const answer = person && person.name;     
    return answer || "객체가 아닙니다!"
};
let person = 9;

const result = getName(person);
console.log(result); // 객체가 아닙니다!

이렇게 하면 person의 값이 리터럴 값이라도 객체인지 아닌지 알 수 있다.

  • answer는 person이 Truthy이며 person.name값이 있어야 하는 조건 두개를 동시에 만족시켜야 한다.
    (그렇지 않으면 undefined가 된다.)
  • return할때 answer가 값을 가지고 있으면 return answer로 작업이 종료된다.(뒤의 실행값은 탐색하지 않는다.)
  • 반면에 answer가 undefined이면 answer는 Falthy이므로 "객체가 이닙니다!"를 반환한다.

let getName = (person) => {
    const answer = person && person.name;     
    return answer || "객체가 아닙니다!"
};
let person = {
    name : "민수",
    color : "black"
};

const result = getName(person);
console.log(result); // 민수

person이 객체이면 answer는 두개의 조건을 만족시키므로
retrun answer한다.

profile
Live the way you think

0개의 댓글