14. 유용한 연산자

연우·2023년 1월 21일
0

드림코딩

목록 보기
11/15
post-thumbnail

단축평가 shortcircuit evaluation

  • && 전자가 true면 후자를 할당
  • || 먼저 true인 것을 할당
const obj1 = {name: '🐶'};
const obj2 = {name: '🐱', owner:'ellie'};

let result = obj1 && obj2;
console.log(result); // {name: '🐱', owner:'ellie'};

result = obj1 || obj2;
console.log(result); // {name: '🐶'};
  • 활용예
    • 조건이 truthy 일 때 && 무언가를 해야 할 경우
    • 조건이 falshy 일 때 || 무언가를 해야 할 경우
function changeOwner(animal){
	if(!animal.owner){ // undefined 을 ! 부정할경우 true
		throw new Error('주인이 없어') // 강제 종료 구문
	}
	animal.owner= '바뀐 주인!'
}

function makenewOwner(animal){
	if(animal.owner){
		throw new Error('주인이 있어')
	}
	animal.owner= '새로운 주인!'
}
// 조건이 truthy 일 때 && 무언가를 해야 할 경우
obj1.owner && changeOwner(obj1);
obj2.owner && changeOwner(obj2);
console.log(obj1); // { name: '🐶'};
console.log(obj2); // { name: '🐱', owner: '바뀐주인!' }

// 조건이 falshy 일 때 || 무언가를 해야 할 경우
obj1.owner || makenewOwner(obj1);
obj2.owner || makenewOwner(obj2);
console.log(obj1); //{ name: '🐶', owner: '새로운주인!' }
console.log(obj2); //{ name: '🐱', owner: '바뀐주인!' }

옵셔널 체이닝 연산자 Optional Chaning Operator

  • ?.
  • null 또는 undefined인 경우를 확인할때
let item = {price:1};
const price = item?.price; //item && item.price 와 같음
console.log(price); // 1

let obj = { name: '🐶', owner: { name: '엘리' } };
function printName(obj) {
  const ownerName = obj?.owner?.name;   // obj && obj.owner && obj.owner.name; 와 같음
  console.log(ownerName); //엘리
}

printName(obj);

Nullish Coalescing Operator

  • ?? null, undefinde
  • || 값이 falshy 한 경우 설정(할당) 0. -0, ''
let num = 0;
console.log(num || '-1'); // -1
// 0은 falshy로 간주
console.log(num ?? '-1'); // 0

0개의 댓글