
논리 연산자와 단축 평가에 대해 알아보자.
논리 연산자란 보통 Boolean(참/거짓) 값과 함께 쓰이며, Boolean 값을 반환한다.
만약 Boolean이 아닌 값을 사용하면 boolean이 아닌 값을 반환할 수 있다.
표현식을 평가하는 중에 결과가 확정된 경우 나머지 평가 과정을 생략하는데 이를 단축평가라 한다.
A와 B가 3판 2선승제인 게임을 하는 경우
A가 2번 이겼다면 A가 이긴 것으로 판단 후 이후 남은 게임을 진행하지 않는 것과 같음.
논리 연산자의 연산 방식에 대해 자세하게 알아보자.
피연산자의 값이 모두 Boolean 값인 경우, Boolean 값을 반환한다.
!false; //true
!0; // true
!NaN; // true
!undefined; // true
!null; // true
!6; // false
true && true; // true
true && false; //false
false && true; // false
false && false; // false
true || true; // true
true || false; // true
false && true; // true
false && false; // false
(1>3)&&(1<3) // false
(1<3)&&(1<5) // true
피연산자의 값이 Boolean 값이 아닌 경우, 피연산자 값 중 하나를 반환한다.
이때 논리 연산자는 피연산자의 값이 Boolean 값으로 변환하여 판단 후 본래의 값을 반환한다.
var trueValue = 5;
var falseValue = 0;
trueValue && falseValue; // 0
trueValue || falseValue; // 5
위의 경우 숫자 0은 false로 판단된다.
"hello" && 0 && 6; // 0
true && false && "hello"; // false
true && 6 && "hello"; // "world"
"hello" || 0 || 6; // "hello"
false || 0 || "hello"; // "hello"
false || 6 || "hello"; // "6"
단축 평가를 유용하게 활용할 수 있는 방법을 알아보자.
비어있는 변수의 프로퍼티 값을 참조하려 하면 에러가 발생한다.
이를 예방하기 위해 아래와 같이 단축평가를 사용할 수 있다.
const object = null
const name = object && object.name
console.log(name); // null
const object2 = {
name: 'hong',
}
const name2 = object && object.name
console.log(name); // 'hong'
함수를 호출할 때 필요한 매개변수의 값을 넣지 않은 경우 undefined 값이 넘어오게 된다.
이 값을 그대로 사용하게 되면 에러가 발생할 수 있으므로 단축평가를 이용하여 기본값을 넣어줄 수 있다.
function getAge(age) {
const age = age || 19;
return getAge;
}
console.log(getAge(30)); // 30
console.log(getAge()); // 19
함수의 리턴값이 null 혹은 undefined인 경우에도 사용할 수 있다.
function request() {
return undefined; // 넘어온 값이 없다고 가정
}
function getResponse() {
return request(); || '잘못된 요청입니다.'
}
console.log(getResponse()); // '잘못된 요청입니다.'
조건문 대신에 단축 평가를 사용할 수 있다.
const isSuccess = true
let answer = isSuccess && '성공'
console.log(answer) // '성공'
위에서 만약 isSuccess 변수에 false에 해당하는 값이 들어갔다면 isSuccess 값이 출력되었을 것이다.