본문 바로가기
JS/JavaScript 강의

37. Logical Assignment Operators (논리 할당 연산자)

by 박기린 2022. 11. 10.

안녕하세요. 박기린 입니다.

이번엔 논리 연산자할당 연산자를 이용한 Short Circuiting 방식인 '논리 할당 연산자'에 대해 알아보겠습니다.

 

 

 

OR assignment Operator (||=)

const restaurant1 = {
  name: 'Capri',
  numGuests: 20,
};

const restaurant2 = {
  name: 'La Pizza',
  owner: 'Giovanni Rossi',
};

직관적인 설명을 위해서, 위와 같은 두 객체가 있다고 가정합시다.

restaurant1은 numGuests property가 존재합니다. 반면에 restaurant2는 numGuests property가 존재하지 않습니다.

레스토랑의 게스트멤버에 대한 정보가 있는 경우가 있고 없는 경우가 있는데, 이를 대비하기 위해 Short Circuiting을 진행합니다.

 

restaurant1.numGuests = restaurant1.numGuests || 10;
restaurant2.numGuests = restaurant2.numGuests || 10;

OR 연산자로 Short Circuiting을 하면 위와 같이 됩니다.

근데 여기서 'restaurant1.numGuests와 restaurant2.numGuests'가 각각의 statements에서 '='의 좌항과 우항에 동시에 사용됩니다. 같은 변수를 반복해서 적는 것을 대체하는 방법으로 Logical Assignment Operator(논리 할당 연산자)가 등장합니다.

 

 

restaurant1.numGuests ||= 10; // restaurant1.numGuests = restaurant1.numGuests || 10;
restaurant2.numGuests ||= 10; // restaurant2.numGuests = restaurant2.numGuests || 10;

'||'와 '='를 이어서 적어주고, 우항에 어떤 value를 할당할지 적어줍니다.

좌항의 변수가 falsy할 경우, 좌항의 변수에 우항의 값을 할당(대입)합니다.

 

 

 

 


AND assignment Operator (&&=)

// AND연산자를 이용해서 레스토랑 주인의 이름을 익명화하기
restaurant2.owner = restaurant2.owner && '<ANONYMOUS>';
restaurant2.owner &&= '<ANONYMOUS>';

AND 연산자 또한 논리 할당 연산자가 존재합니다.

'||='와는 반대로 좌항이 truthy한 경우, 좌항의 변수에 우항의 값을 할당(대입)합니다.

 

 

 

 

 


Nullish assignment Operator (??=)

const restaurant3 = {
  name: 'Capri',
  numGuests: 0,
};

restaurant3.numGuests ??= 10;

실제 값에 0과 ''이 포함되는 경우를 방지하기 위한, Nullish Operator(??)  또한 논리 할당 연산자가 존재합니다.

 

반응형