모던 자바스크립트 Deep Dive

[TIL/모던 자바스크립트 Deep Dive] 2023/05/05

논리 연산자를 사용한 단축 평가"논리합(||) 또는 논리곱(&&) 연산자 표현식의 평가 결과는 불리언 값이 아닐 수도 있다. 논리합(||) 또는 논리곱(&&) 연산자 표현식은 언제나 2개의 피연산자 중 어느 한쪽으로 평가된다." 논리 연산자를 사용한 단축 평가 파트에서

2023년 5월 5일1min read

9장. 타입 변환과 단축 평가

9-4. 단축 평가

논리 연산자를 사용한 단축 평가

"논리합(||) 또는 논리곱(&&) 연산자 표현식의 평가 결과는 불리언 값이 아닐 수도 있다. 논리합(||) 또는 논리곱(&&) 연산자 표현식은 언제나 2개의 피연산자 중 어느 한쪽으로 평가된다."

논리 연산자를 사용한 단축 평가``` 파트에서는 위의 문장을 이해하는 것이 목표였다.

![](https://velog.velcdn.com/images/minkwan/post/cc775016-8de8-45e7-8a55-61eb6a535d57/image.png)

![](https://velog.velcdn.com/images/minkwan/post/57fbbfda-76ab-4ff5-9558-43864f752d53/image.png)

논리 연산의 결과를 결정하는 피연산자를 타입 변환하지 않고 그대로 반환하는 모습을 확인할 수 있다. 이를 ```단축 평가(short-circuit evaluation)```라 한다. 표현식을 평가하는 도중에 평가 결과가 확정되면, 나머지 평가 과정을 생략한다는 의미이다. 단축 평가는 다음 규칙을 따르게 된다.

![](https://velog.velcdn.com/images/minkwan/post/15a8b829-e4d5-4331-ba57-f5d3d5f68d45/image.png)

단축 평가는 if 문을 대체할 수 있다.

![](https://velog.velcdn.com/images/minkwan/post/4142b6a9-67b6-4f0d-b0f5-eecdc287952c/image.png)

![](https://velog.velcdn.com/images/minkwan/post/f042b078-73b1-4810-a318-6d556cdacda0/image.png)

추가적으로, 삼항 조건 연산자는 if...else 문을 대체할 수 있다.

![](https://velog.velcdn.com/images/minkwan/post/111f1180-d2da-47b7-a739-36653ba714ec/image.png)

단축 평가는 객체와 함수에서 유용한 패턴으로 작용할 수 있다. 객체와 함수에 단축 평가가 활용되는 상황을 간단히 살펴봤다.

**<객체를 가리키기를 기대하는 변수가 null 또는 undefined가 아닌지 확인하고 프로퍼티를 참조할 때>**

![](https://velog.velcdn.com/images/minkwan/post/4c3d16ea-86dd-42e9-a194-a2f4f5a8f46f/image.png)

![](https://velog.velcdn.com/images/minkwan/post/3ea16f10-a8f7-4ea5-968d-048e04ec683f/image.png)



**<함수 매개변수에 기본값을 설정할 때>**

함수를 호출할 때 인수를 전달하지 않으면 매개변수에는 undefined가 할당된다. 단축 평가를 사용해 매개변수의 기본값을 설정하면 undefined로부터 발생할 수 있는 에러를 방지할 수 있다.

![](https://velog.velcdn.com/images/minkwan/post/a7f0a1b6-3493-44af-a2ee-5db1c01e6fbc/image.png)


> **옵셔널 체이닝 연산자**

논리 연산자 &&는 좌항이 false로 평가되면, 좌항 피연산자를 그대로 반환한다고 했다. 단, ``0이나 ''``은 객체로 평가될 때도 있다고 한다. 이에 대해서는 21장에서 다룬다고 해서 넘어갔다.

null 병합 연산자