바코94 2020. 6. 28. 22:46

falsy한 값이란 if의 조건식으로 평가되었을 때 false로 취급되는 값이다. 쉽게 말하면 if ( ? ) { } 에서 ? 조건이 false로 계산되는 값이다. 

 

예를 들면

if( 'hello') {

  console.log('hello~~');

}

와 같은 상황에서 'hello'는 false로 판단될까? 아니면 true로 판단될까? 자바스크립트에서는 true로 판단된다.

 

falsy한 값은 다음과 같다. 

undefined, null, 0, '', NaN

 

let a ;

let b = null;

let c = 0;

let d = '';

let e = a+ b; 

 

이를 실제로 확인하는 방법은 !!a 처럼 !!를 붙여서 확인하는 방법이다. 또는 a ? true: false로 삼항 연산자를 사용해서 확인할 수도 있다.

 

활용하는 방법은 어떤 것이 있을까?

function get_name(obj){

  return obj && obj.name;

}

위와 같이 사용하면 obj가 undefined일 때는 뒤의 obj.name을 확인하지 않고 리턴한다. 따라서, obj가 truthy한 값일 때만 obj.name을 리턴해준다.

 

또는 falsy한 값이 올 때 사용할 값이 있다면 return variable1 || "falsy value"; 와 같이도 사용할 수 있다.

switch case 대신 객체를 활용할 수도 있다.

function getSound(animal){
  const sounds = { 개: '멍멍!', 고양이: '야용~', 참새: '짹짹' };
  return sounds[animal] || ' ...??? ';
}