: A와 B가 모두 True 일때만 True를 반환
: A가 false라면 뒤에 있는 피연산자는 연산하지 않고 False를 반환하여 연산 종료
: A가 true라면 두 번째 피연산자 값을 return한 후 연산 종료
: A와 B 둘 중 하나만 True이면 True를 반환
: A가 True라면 뒤에 있는 피연산자는 연산하지 않고 True 반환하여 연산 종료
: A가 false라면 두 번째 피연산자 값을 반환하고 연산 종료
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);
// 달봉이