JavaScript/자바스크립트 기본

[JS]단축평가short-circuit evaluation

김귤🐵 2023. 3. 12. 14:56

 

1.단축평가

연산자(operator)는 하나 이상의 표현식을 대상으로 산술,할당,비교,논리,타입,지수 연산 등을 수행해 하나의 값을 만든다.

그 중 논리 연산자를 이용한 단축평가가 리액트를 공부하던 중 나왔는데, 이해가 부족해서 정리를 하려고 한다.

 

|| 논리합(OR)또는 && 논리곱(AND)의 평가 결과는 불리언 값이 아닐 수도 있다. 아래의 코드를 보자.

'🙀' && '😻' --> 😻

AND연산자는 두개의 피연산자 모두 true일때 true이다.

첫 번째 값 '🙀'은 Truthy값이므로 true다. 하지만 아직까지는 위 표현식을 평가 할 수없다.

두 번째 '😻' 까지 평가해야지 위의 표현식을 평가할 수 있다. 두번째 피연산자가 위 논리곱 연산자 표현식의 평가 결과를 반환하는 것이다.

즉 AND연산자는 논리 연산의 결과를 결정하는 두 번째  피연산자, '😻'가 그대로 반환된다.

 

'🙀'||'😻'-->🙀

OR연산자도 마찬가지다.OR연산자의 경우 둘 중 하나라도 true라면  true를 반환한다. 

첫 번째 피연산자가 true이 때문에 두 번째 피연산자는 확인 하지 않고 바로 첫 번째 값'🙀'를 반환한다.

 

 


 

단축평가 표현식과 평가 결과

단축 평가 표현식 평가 결과
true || 결과 true
false || 결과 결과
true && 결과 결과
false && 결과 false

평가 규칙에 따른 예

//OR 연산자
'앞의 동작' || '뒤의 동작' // '앞의 동작'
false || '뒤의 동작' // '뒤의 동작'
'앞의 동작' || false //'앞의 동작'

//AND 연산자
'앞의 동작' && '뒤의 동작' //'뒤의 동작'
false && '뒤의 동작' //false
'앞의 동작'&& false //false

단축 평가의 활용

단축 평가를 사용하면 if문을 대체 할 수 있다.

✅조건이 true일 때 수행

let result = true;
let message = '';

//if문
if(result) message = '완료 되었습니다'

//if문을 대체
message = result && '완료 되었습니다'
console.log(message)//'완료 되었습니다'

❎조건이 false일 때 수행

let result = false;
let message ='';

if(!result) message = '통신 실패';
message = result || '통신 실패'
console.log(message)//'통신 실패'

 

 

 

 

 

 

참고 도서

이웅모 모던 자바스크립트Depp Dive