본문 바로가기
JavaScript/Mordern JavaScript

11.Truthy and Falsy

by 송재근 2021. 6. 30.
반응형
function print(person) {
  console.log(person.name);
}

const person = {
  name: 'John'
};

print(person);

만약에 이러한 상황에서, 만약 print 함수가 다음과 같이 파라미터가 비어진 채로 실행됐다고 가정

 

function print(person) {
  console.log(person.name);
}

const person = {
  name: 'John'
};

print();

 

다음과 같은 에러를 생성

TypeError: Cannot read property 'name' of undefined

이러한 상황에서, print 함수에 object 가 주어지지 않았다면, 문제가 있다고 콘솔에 출력해야 한다면 다음과 같이 구현 할 수 있습니다.

 

function print(person) {
  if (person === undefined) {
    return;
  }
  console.log(person.name);
}

const person = {
  name: 'John'
};

print();

그런데 다음과 같이 print 에 null 값이 파라미터로 전달되면?

 

function print(person) {
  if (person === undefined) {
    console.log('person이 없네요');
    return;
  }
  console.log(person.name);
}

const person = null;
print(person);

 

다음과 같은 에러를 생성

TypeError: Cannot read property 'name' of null

 

그러면 또.. print 함수에 조건을 추가해줘야함

function print(person) {
  if (person === undefined || person === null) {
    console.log('person이 없네요');
    return;
  }
  console.log(person.name);
}

const person = null;
print(person);

 

이렇게 person 이 undefined 이거나, null 인 상황을 대비하려면 위와 같이 코드를 작성해야하는데, 여기서 위 코드는 다음과 같이 축약해서 작성 할 수 있음.

function print(person) {
  if (!person) {
    console.log('person이 없네요');
    return;
  }
  console.log(person.name);
}

const person = null;
print(person);

 

- undefined 와 null 은 Falsy 한 값

- Falsy 한 값 앞에 느낌표를 붙여주면 true 로전환

 

console.log(!undefined);
console.log(!null);
console.log(!0);
console.log(!'');
console.log(!NaN);

이 값은 모두 true 가 됨

 

console.log(!3);
console.log(!'hello');
console.log(!['array?']);
console.log(![]);
console.log(!{ value: 1 });

그 외의 값은 모두! Truthy 한 값

아까와는 반대로 모든 값이 false 가 됨

 

※NaN?

- Not A Number 라는 의미

- 보통 NaN 은 문자열을 숫자로 변환하는 자바스크립트 기본함수 parseInt 라는 함수를 사용하게 될 때 볼 수 있음

const num = parseInt('15', 10); // 10진수 15를 숫자로 변환하겠다는 의미
console.log(num); // 15
const notnum = parseInt('야호~', 10);
console.log(notnum); // NaN

 

if 문에서 사용

 

const value = { a: 1 };
if (value) {
  console.log('value 가 Truthy 하네요.');
}

- value 가 Truthy 한 값이기 때문에, 콘솔에 메시지가 출력 됨

-  반면, value 가 null, undefined, 0, '', NaN 중 하나라면, 나타나지 않을 것

 

const value = { a: 1 };

const truthy = value ? true : false;

- 특정 값이 Truthy 한 값이라면 true, 그렇지 않다면 false 로 값을 표현

- 우리가 이전에 배운 삼항연산자를 사용하면 쉽게 value 값의 존재 유무에 따라 쉽게 true 및 false 로 전환이 가능

 

const value = { a: 1 };
const truthy = !!value;

!value 는 false 가 되고, 여기에 !false 는 true 가 되어서, 결과는 true 가 됨

반응형

'JavaScript > Mordern JavaScript' 카테고리의 다른 글

13.함수의 기본 파라미터  (0) 2021.06.30
12.단축 평가 (short-circuit evaluation) 논리 계산법  (0) 2021.06.30
10.삼항 연산자  (0) 2021.06.30
9.프로토타입과 클래스  (0) 2021.06.30
8.배열 내장함수  (0) 2021.06.24