본문 바로가기
개발/자바스크립트

[자바스크립트] Truthy, Falsy 애매한 이놈들에 대해서

by 핸디(Handy) 2020. 7. 20.

Falsy.. 우리 말로는 거짓 같은 값으로 불리는 놈입니다. boolean 문맥상으로 false로 평가받는 값이라는 의미입니다.

이와 반대로 Truthy 가 있습니다.

Truthy 

'0', 'false', [], {}, funtion(){} 

Falsy 

undefined, null, 0, -0, NaN, false, '', ""

이 정도가 있습니다.

코딩을 하다 보니 Truthy는 생각보다 쓸 일이 그다지 많지 않지만 falsy 같은 경우의 가독성이 올라가서 주로 쓰게 됩니다.

하나의 예시를 보겠습니다.

var inputData = {}
inputData.num = 5
if(inputData){
	if(inputData.num){
    	let ratio = inputData.num + '%'; // ratio = 5%
    }
}

inputData가 있을때 그 안에 있는 num객체를 확인하고 ratio란 값을 사용하는 코드입니다.

처음 inputData가 {}, 즉 객체이기 때문에 Truthy로 인식되고 ratio가 계산되는 것입니다.

하지만 이 falsy의 경우 문제가 생길 때가 있습니다. 

var inputData = {}
inputData.num = 0
if(inputData){
	if(inputData.num){
    	let ratio = inputData.num + '%'; // ratio = undefined
    }
}

inputData.num = 0 일 경우에 다음과 같은 오류가 생깁니다. ratio를 구하는 계산식이기 때문에 넘어오는 inputData.num는 0~100 사이의 number가 넘어온다는 것을 가정합니다.

하지만 0인 경우에 ratio는 계산되지 않습니다. 0은 falsy이기 때문에 ratio 계산식을 수행하지 못합니다.

따라서 다음과 같은 추가적인 작업이 필요합니다.

var inputData = {}
inputData.num = 0
if(inputData){
	if(typeof(inputData.num) == 'number'){
    	let ratio = inputData.num + '%'; // ratio = 0%
    }
}

예시를 보시면 아시겠지만 falsy는 편하지만 때론 오류를 발견하기 힘든 결과를 내보내기도 합니다. 

따라서 falsy를 쓰시되 조금더 생각하고 쓰면 아주 좋은 놈입니다.

댓글