💡 단축 평가 short-circuit evaluation
&&
전자가 true
이면 후자를 할당
||
먼저 true
인것을 바로 할당
const obj1 = { name: '🐶' };
const obj2 = { name: '🐱', owner: 'Ellie' };
let result = obj1 && obj2;
console.log(result);
result = obj1 || obj2;
console.log(result);
- 활용 예
- 조건이 truthy 일때 && 무언가를 해야할 경우
- 조건이 falshy 일때 || 무언가를 해야할 경우
const obj1 = { name: '🐶' };
const obj2 = { name: '🐱', owner: 'Ellie' };
function changeOwner(animal) {
if (!animal.owner) {
throw new Error('주인이 없어');
}
animal.owner = '바뀐주인!';
}
obj1.owner && changeOwner(obj1);
obj2.owner && changeOwner(obj2);
console.log(obj1);
console.log(obj2);
function makeNewOwner(animal) {
if (animal.owner) {
throw new Error('주인이 있어');
}
animal.owner = '새로운주인!';
}
obj1.owner || makeNewOwner(obj1);
obj2.owner || makeNewOwner(obj2);
console.log(obj1);
console.log(obj2);
💡 옵셔널 체이닝 연산자 Optional Chaining Operator
?.
- null 또는 undefined 확인할 때
let item = { price: 1 };
const price = item?.price;
console.log(price);
let obj = { name: '🐶', owner: { name: '엘리' } };
function printName(obj) {
const ownerName = obj?.owner?.name;
console.log(ownerName);
}
printName(obj);
💡 nullish 병합연산자
??
: null, undefined
||
: falshy한 경우 설정(할당) 0, -0, ''
let num = 0;
console.log(num || '-1');
console.log(num ?? '-1');