[Javascript] 논리합 연산자(||)

Jinsol Kim·2022년 11월 8일
0

자바스크립트

목록 보기
1/2

🧁 단축평가

||(논리합), &&(논리곱) 연산자는 왼쪽부터 오른쪽으로 평가를 진행하는데,
중간에 평가 결과가 나오면 오른쪽 끝까지 가지 않고 평가 결과를 반환해 버린다.
이를 '단축 평가(short circuit evvaluation)'라고 하며, 피연산자의 타입을 변환하지 않고 그대로 반환한다.

단축평가를 활용하면 아래와 같은 코드가 가능해진다.

"apple" || "banana" ; // "apple"
"apple" && "banana" ; // "banana"

🍩 적어도 둘 중 하나만 true면 true로 평가된다.

(1) 왼쪽 피연산자가 true면, 바로 true를 반환한다.

true || false;  // true(오른쪽의 false는 볼 것도 없이, 왼쪽의 true 반환)
true || true;  // true(오른쪽의 true는 볼 것도 없이, 왼쪽의 true 반환)

그런데 만약 왼쪽 피연산자가 "apple" 같은 문자열이라면?

"apple" || false;  // "apple"
"apple" || true;  // "apple"

"apple"은 빈 문자열이 아니므로 true로 평가된다.
따라서 오른쪽은 볼 것도 없이, 바로 "apple"의 값을 그대로 반환한다.(true로 변환하지 않음)

이게 바로 '단축평가'다!


(2) 왼쪽 피연산자가 false면, 오른쪽 피연산자의 값이 true/false 여부를 결정한다.

false || true;  // true (오른쪽 값이 반환된다)
false || false;  // false (오른쪽 값이 반환된다)

즉, || 연산자는 왼쪽이 false이면, "오른쪽 피연산자 값을 그대로 반환" 한다.

그런데 만약 오른쪽 피연산자가 "banana" 같은 문자열이라면?

false || "banana";  // "banana"

왼쪽 피연산자가 false이므로, 오른쪽 피연산자인 "banana"가 타입 변환 없이 그대로 반환된다.


(3) 둘 다 문자열인 경우에는?

"apple" || "banana";  // "apple"

"apple"도 true이고, "banana"도 true이다.
왼쪽이 true로 평가되므로, 오른쪽은 볼것도 없이 '왼쪽 값을 그대로 반환'한다.
즉, "apple"이 반환된다.


🍭 논리합 연산자(||) 의 패턴

0개의 댓글