[dream coding] 단축평가 , 옵셔널 체이닝 연산자, nullish 병합연산자 14강 TIL

sohyun·2022년 7월 7일
0

드림코딩 강의 정리

목록 보기
15/20
post-thumbnail

💡 단축 평가 short-circuit evaluation

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

//&& 전자가 true이면 후자를 할당한다
let result = obj1 && obj2; 
console.log(result);  //{ name: '🐱', owner: 'Ellie' };

//|| true인것을 바로 할당한다
result = obj1 || obj2;
console.log(result);  //{ name: '🐶' };
  • 활용 예
    • 조건이 truthy 일때 && 무언가를 해야할 경우
    • 조건이 falshy 일때 || 무언가를 해야할 경우
const obj1 = { name: '🐶' };
const obj2 = { name: '🐱', owner: 'Ellie' };

function changeOwner(animal) {
  if (!animal.owner) {  //undefined 을 ! 부정할경우 true
    throw new Error('주인이 없어');   //강제 종료 구문
  }
  animal.owner = '바뀐주인!';
}

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


function makeNewOwner(animal) {
  if (animal.owner) {
    throw new Error('주인이 있어');
  }
  animal.owner = '새로운주인!';
}

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

💡 옵셔널 체이닝 연산자 Optional Chaining 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 병합연산자

  • ?? : null, undefined
  • ||: falshy한 경우 설정(할당) 0, -0, ''
let num = 0;
console.log(num || '-1');   //-1

//ull,undefined 인 경우가 아니므로 num에 할당한 값이 나옴
console.log(num ?? '-1');   //0
profile
냠소현 개발일지

0개의 댓글