단축평가 shortcircuit 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 일 때 || 무언가를 해야 할 경우
function changeOwner(animal){
if(!animal.owner){
throw new Error('주인이 없어')
}
animal.owner= '바뀐 주인!'
}
function makenewOwner(animal){
if(animal.owner){
throw new Error('주인이 있어')
}
animal.owner= '새로운 주인!'
}
obj1.owner && changeOwner(obj1);
obj2.owner && changeOwner(obj2);
console.log(obj1);
console.log(obj2);
obj1.owner || makenewOwner(obj1);
obj2.owner || makenewOwner(obj2);
console.log(obj1);
console.log(obj2);
옵셔널 체이닝 연산자 Optional Chaning 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 Coalescing Operator
?? null, undefinde
- || 값이 falshy 한 경우 설정(할당) 0. -0, ''
let num = 0;
console.log(num || '-1');
console.log(num ?? '-1');