단축평가

개발(공부) 자국·2021년 9월 13일
0

여러 곳에서 사용되었지만 정확하게는 설명하지 못했던 것 중 하나가 단축평가에 대한 부분이었다. 이 부분을 정리해보고자 한다.

단축 평가란?

논리곱(&&) 연산자와 논리합(||) 연산자는 피연산자를 타입을 Boolean 값으로 변환하지 않고 그대로 반환하는 것을 단축 평가라고 한다.

논리곱 (&&)

'apple' && 'orange' // 1 'orange'
'apple' && null    // 2 null
'false && 'apple'   // 3 false

&&의 결과가 결정 나는 때의 값을 반환하게 된다.
&& 연산자는 피연산자 둘 모두가 참인 경우를 제외하고는 모두 거짓이 된다. 처음에 참인 값이 나왔다면 아직 참 거짓 어느 것으로 평가가 확정이 된 상태가 아니기 때문에 두 번째 값으로 평가가 확정된다.

1번의 경우 apple는 참이기 때문에 평가가 확정되지 않고 orange로 인해 true로 평가가 끝나게 되고 이때 평가를 결정하게 된 orange를 반환하게 된다.

2번의 경우 apple는 참이기 때문에 평가가 확정되지 않고 null로 인해 false로 평가가 끝나게 되고 null로 인해 평가가 결정이 되었기 때문에 null을 반환하게 된다.

3번의 경우 false가 거짓으로 뒤에 어떤 값이 나와도 false로 평가가 된다. false로 인해 평가가 결정되었기 때문에 false를 반환하게 된다.

논리합 (||)

'apple' || 'orange' // 1 'apple'
0 || 'apple'        // 2 'apple
0 || null           // 3 'null'

||의 평가가 결정나는 때의 값을 반환하게 된다.
||의 연산자는 피연사자 둘 모두 거짓일 경우를 제외하고는 모두 참이된다. 처음에 거짓이 나왔다면 아직 거짓으로 평가가 확정된 상태가 아니기 때문에 두 번째 값으로 평가가 확정된다.

1번의 경우 apple는 참이기 때문에 뒤에 어떤 값이 나와도 true로 평가가 된다. apple로 인해 평가가 결정되었기 때문에 apple를 반환하게 된다.

2번의 경우 0은 거짓이기 때문에 아직 참인지 거짓인지 평가 할 수 없고 apple로 인해 true로 평가가 끝나게 된다. apple로 평가가 결정되었기 때문에 apple를 반환하게 된다.

3번의 경우 0은 거짓이기 때문에 아직 참인지 거짓인지 평가 할 수 없고 null로 인해 false로 평가가 끝나게 된다. null로 평가가 결정되었기 때문에 null를 반환하게 된다.

논리합, 논리곱 모두 평가를 결정하게 한 요소를 반환한다.

단축평가를 활용한 예

객체가 null인지 확인하고 프로퍼티를 참조할 때

let curImage = null;

console.log(curImage && curImage.src); // null

함수의 인수를 초기화할 때

function getStringLength(str) {
  str = str || '';
  return str.length;
}

getStringLength();     // 0
getStringLength('hi'); // 2
profile
기록을 중요하게 생각하는 사람입니다. 학습한 내용을 정리한 것이라 잘못된 정보가 있을 수 있습니다. 잘못된 정보는 언제든 말씀해 주시기 바랍니다.

0개의 댓글