&&, ||를 통해 객체인지 아닌지 쉽게 구분할 수 있다.
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의 값이 리터럴 값이라도 객체인지 아닌지 알 수 있다.
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한다.