자바스크립트에서 내가 할당한 변수에 값이 없을 때나 호출한 함수의 리턴 값이 없을 때에 대한 처리를 해줘야 할 때가 있습니다. 변수에 어떤 값이 할당되기를 원하지만 실제로 할당되지 않은 경우에 대한 예외 처리를 하기 위해, 간단하게 조건문을 사용할 수 있습니다.
const empty = () => {
console.log('아무것도 없다!')
}
let variable = empty();
if(variable) {
console.log(variable);
} else {
console.log('리턴된 값이 없습니다!')
}
종종 위와 같은 코드를 작성하지만 잠시 생각해보면 이상하다는 것을 알 수 있습니다.
우리는 자바스크립트의 조건문의 조건으로 true나 false값을 가지는 boolean 값만 줄 수 있다는 것을 알고 있습니다. 하지만 위의 코드에서 variable 변수가 가지는 값은 undefined
입니다. 조건문에 boolean 값이 아닌 값을 가지는 변수를 넣었는데도 정상적으로 동작한다는 것을 알 수 있습니다. 이를 이해하기 위해서는 자바스크립트의 Truthy / Falsy 개념에 대해 알 필요가 있습니다.
falsy한 값은 자바스크립트에서 6개입니다.
이 Falsy 값들이 자바스크립트에서 조건문이나 반복문에 들어가면, 자바스크립트가 내부적으로 이 값들을 false boolean 값으로 형 변환 해줍니다.
Truthy는 Falsy에 해당하는 6개가 아닌 모든 값입니다. 위에 해당하는 6개의 값이 아니라면 자바스크립트는 Truthy로 판단하여 내부적으로 true boolean 값으로 형 변환 해줍니다.