논리합(||) 연산자와 논리곱(&&) 연산자의 연산 결과는 불리언 값이 아닐 수도 있다.
두 연산자는 언제나 피연산자 중 어느 한쪽 값을 반환한다.
표 출처: https://medium.com/js-drugs/javascript-short-circuit-evaluation-d9b0fcb8019a
논리 연산 결과를 결정하게 되는 대상의 값을 그대로 반환한다.
&&
true
이면 true
&&
논리곱과 단축 평가
&&
은 첫번째 피연산자가true
로 평가되어도 두번째 피연산자까지 확인해야만 결과를 알 수 있다. 최종 결과를 결정한 피연산자 값이 반환되므로 첫번째 피연산자가false
여서 논리 평가가 중단되는 때를 제외하고는 두번째 피연산자 값이 반환된다.
논리합(OR) ||
둘 중 하나라도 true
이면 true
||
논리합과 단축평가'
||
은 첫번째 피연산자만true
로 평가되어도 최종 결과가 확정되므로 이 경우 첫번째 피연산자가 반환된다.false
인 경우는 두번째 피연산자까지 평가해야하기 때문에 두번째 피연산자 값이 반환된다.
AND는 Falsy값을 맞닥뜨리면 멈춘다.
Falsy값 존재 여부에 따라 값이 결정되는 연산자이기 때문이다.
AND는 Falsy값을 찾으면 그 값을 반환, 존재하지 않는다면 마지막 값이 반환 된다.
OR은 Truthy값을 맞닥뜨리면 멈춘다.
Truthy 존재 여부에 따라 값이 결정되는 연산자이기 때문이다.
OR은 Truthy값을 찾으면 그 값을 반환, 존재하지 않는다면 마지막 값이 반환 된다.
▲ 객체가 null인지 확인하고 프로퍼티를 참조할 때
▲함수의 인수(argument)를 초기화할 때
AND 연산자가 OR 연산자보다 우선순위가 높으므로 두 연산자가 공존하는 식에서는 AND연산자를 먼저 실행한다.