자바스크립트 단축 평가 패턴

Lenny·2022년 7월 8일
0
post-thumbnail

자바스크립트에서 논리합(||) 또는 논리곱(&&) 연산자 표현식의 평가 결과는 불리언 값이 아닐 수 있다.

논리합(||) 또는 논리곱(&&) 연산자 표현식은 언제나 2개의 피연산자 중 어느 한쪽으로 평가된다는 것이다.

예제

논리곱 (&&)

'Cat' && 'Dog' // -> Dog

논리곱(&&) 연산자는 두 개의 피연산자가 모두 true로 평가될 때 true를 반환한다.
논리곱 연산자는 좌항에서 우항으로 평가가 진행된다.

첫 번째 피연산자 'Cat'은 Truthy 값이므로 true로 평가된다. 하지만 논리곱 연산자이기 때문에 이 시점에서는 위 표현식을 평가할 수 없다. 두 번째 피연산자까지 평가해 보아야 위 표현식을 평가할 수 있다. 즉, 두 번째 피연산자가 위 논리곱 연산자 표현식의 평가 결과를 결정한다.

"Dog" 역시 Truthy 값 이므로, 두번째 피연산자 "Dog"를 그대로 반환하게 된다.

논리합(||)

'Cat' || 'Dog' // -> Cat

논리합(||) 연산자는 두 개의 피연산자 중 하나만 true로 평가되어도 true를 반환한다.
논리합 연산자도 좌항에서 우항으로 평가가 진행된다.
첫 번째 연산자 'Cat'은 Truthy 값이므로 true로 평가된다. 논리합 연산자는 두번째 연산자를 평가해 보지 않아도 이 시점에서 표현식을 평가할 수 있다.

따라서 이 때 논리합 연산자는 논리 연산의 결과를 결정한 첫 번째 피연산자, 즉 문자열 "Cat"을 그대로 반환한다.


논리곱(&&) 연산자와 논리합(||) 연산자는 이처럼 논리 연산의 결과를 결정하는 피연산자를 타입 변환하지 않고 그대로 반환한다.

이를 단축평가 (short-circuit evaluation) 라 한다.

단축평가는 표현식을 평가하는 도중에 평가 결과가 확정된 경우 나머지 평가 과정을 생략하는 것을 말한다.

단축 평가를 활용한 예제

논리곱

var done = true;
var message = '';

message = done && '완료';
console.log(message); // 완료

논리합

var done = false;
var message = '';

message = done || '미완료';
console.log(message); // 미완료

  • 참고

    모던 자바스크립트, 이웅모 저

profile
🧑‍💻

0개의 댓글