안녕하세요. 박기린 입니다.
이번엔 논리 연산자와 할당 연산자를 이용한 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(??) 또한 논리 할당 연산자가 존재합니다.
'JS > JavaScript 강의' 카테고리의 다른 글
39. ES6 버전의 Enhanced Object Literals (0) | 2022.11.15 |
---|---|
38. for-of로 Array의 Element에 접근하기 (0) | 2022.11.14 |
36. Nullish Coalescing Operator (Null 병합 연산자) (0) | 2022.11.09 |
35. Short Circuiting (단락 회로 평가) (0) | 2022.11.08 |
34. Rest Parameters (나머지 매개변수) (0) | 2022.11.07 |