논리 연산자를 이용하여 로직을 축약하는 것.
논리합(||) 혹은 논리곱(&&) 연산자 이용함.
JavsScript에서 논리합과 논리곱의 결과는 true, false가 아닐 수도 있다.
표현식에서는 논리합과 논리곱의 결과로 반드시 피연산자 중 하나로 평가됨.
좌 -> 우로 평가 진행. 모든 피연산자가 Truthy일 때 가장 마지막 피연산자 반환.
'First' && 'Second' // 'Second'
'First'
는 Truthy로 평가되고 우측인 'Second'
로 이어져 최종 결과가 'Second'가 된다.
좌 -> 우로 평가 진행. 하나만 Truthy로 평가되어도 그 값을 반환.
'First' || 'Second' // 'First'
'First'
가 Truthy로 평가되어 'Second'
는 무시되고 그대로 'First'
반환
if (a) { // a가 Truthy하면
b = c; // b에 c를 대입
}
위 로직을 논리곱 단축 평가를 이용하여 줄일 수 있다.
b = a && c; // a가 Truthy하면 c가 대입된다.
반대로 falsy할 때 로직은 논리합 단축 평가 이용 가능.
b = a || c; // a가 Falsy하면 c가 대입된다.
const obj = null;
const value = obj && obj.value;
// obj가 null이면 Falsy하기 때문에 우측 피연산자가 평가되지 않는다.
function getLength(str) {
const newStr = str || '';
// str이 Falsy하면 ''가 반환된다.
return newStr.length;
}