이전글에서 연산자가 작동하는 방식을 공부했다. 이번 글에서는 논리연산자의 단축평가에 대해 알아보고자 한다. 단축평가를 알아두면 논리연산자를 사용하는 많은 상황에서 더 효율적으로 코드를 작성할 수가 있다.
논리 연산자는 왼쪽에서 오른쪽으로 순서대로 조건문을 평가한다. 하지만, 만약 중간에 결정적인 결과가 나오면 끝까지 진행하지 않고 중간에 결과값을 반환해 버리는 것을 말한다. 만약 AND를 이용해서 코드를 작성했을 때 첫번째 조건이 false로 나오면 뒤가 참이더라도 결과는 false가 된다. 그러므로 결과값을 바로 반환하는 것이다. OR일때도 마찬가지이다. 앞에가 true라면 뒤의 조건을 볼 필요 없이 이 조건문은 true가 된다. 그러므로 바로 결과를 반환한다.
| 연산자 | 표현식 | 예시 | 설명 |
| AND | && | example1 && example2 | 참이면 example2를 반환 거짓이면 example1을 반환 |
| OR | || | example1 || example2 | 참이면 example1을 반환 거짓이면 example2를 반환 |
| NOT | ! | !example1 | example1이 참이면 false를 반환 거짓이면 true를 반환 |
이전글에서 사용했던 표를 다시 한 번 더 가져왔다. 위와 같은 결과가 나오는 이유가 바로 단축평가 때문인 것이다.
'exp1' && 'exp2' //exp2
'exp1' || 'exp2' //exp1
위의 예시와 같이 같은 것을 비교함에도 다른 결과가 나올 수 있는것도 바로 이것 때문이다.
null과 undefined값을 거르는 방어코딩에서 단축평가는 많이 사용된다. 뒤에서 equal과 같이 값을 비교하는 조건문을 사용하기 전에 먼저 null과 undefined을 골라내는 조건문을 추가하는 것으로 falsy값으로 인해 생기는 오류들을 방어 할 수 있다.
또 단축평가를 이용해서 기본값을 설정하는 것으로 falsy값을 받았을때에 오류들을 대비할 수 있고 매개변수를 체크하는 것도 가능하다.
function getAge(data){
return age = data || "default";
}
getAge(32); //32
getAge(); //default
let condition = true;
let result = "";
//if(condition) result = "참값";
result = condition && "참값";
//둘다 result에 "참값"을 세팅한다.
//조건문이 참일때 변수값을 할당하도록 if문 대신 단축평가를 이용해서 코드를 간결하게 만들 수 있다.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_AND
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_OR
https://curryyou.tistory.com/193