단축 평가
단축 평가 표현식 |
평가 결과 |
true || anything |
true |
false || anything |
anything |
true && anything |
anything |
false && anything |
false |
- 단축 평가는 위 표에서 본것 같이 논리곱(&&), 논리합(||) 표현식을 평가하는 도중에 평가 결과가 확정된 경우 나머지 평가 과정을 생략하는 것을 말합니다.
논리곱(&&)과 논리합(||)의 단축 평가 원리
// 논리합 연산자
"Cat" || "Dog"; // "Cat"
false || "Dog"; // "Dog"
"Cat" || false; // "Cat"
// 논리곱 연산자
"Cat" && "Dog"; // "Dog"
false && "Dog"; // false
"Cat" && false; // false
- 논리곱(&&)과 논리합(||)은 좌항에서 우항으로 표현식을 평가합니다. 그리고 논리 연산의 결과를 결정짓는 피연산자를 return 합니다.
단축 평가와 객체
// 논리곱(&&) 응용
const player = null; // or undefined
// player가 null 또는 undefined일 경우 프로퍼티에 접근하지 않음
const name = player && player.name;
// 논리합(||) 응용
function getStringLength(str) {
//null 또는 undefined로 인한 에러 방지
str = str || "";
return str.length;
}
- 위와 같은 방식으로 단축 평가를 응용할 수 있습니다.
옵셔널 체이닝 연산자
const player = null;
// name은 undefined
const name = player?.name;
?.
좌항의 연산자가 null 또는 undefined일 경우 undefined를 return
- 논리합(&&) 연산자는 좌항이 Falsy라면 좌항을 return 하지만
?.
연산자는 오로지 null 또는 undefined일 경우에만 우항을 return 합니다.
null 병합 연산자
function sayHello(name) {
name = name ?? "default";
console.log(`${Hello} name`);
}
- null 병합 연산자는 좌항이 null 또는 undefined일 경우 우항을 return 하고 반대로 우항이 null 또는 undefined일 경우 좌항을 return 합니다. 위와 같은 방법으로 논리곱(||) 연산자를 대신하여 변수에 대한 default 값을 설정할 수 있습니다. ( 논리곱(||)은 Falsy일 경우 우항을 return 하는데 Falsy도 로직에서 유효한 값일 경우 문제가 되기 때문에 null 병합 연산자를 사용하는 것이 좋습니다. )