it공부 (개념)/javascript

if, while 조건문을 사용할 때 false로 평가되는 값들 : falsy 값 정리

cantor 2023. 3. 29. 00:00

false로 평가되는 값 바로 보기

동기:

if와 while 조건문을 유연하게 작성하고자,
조건식이 false로 판단되는 값들을 정리하였습니다.


*false가 아닌 값들은 전부 true로 판별됩니다.

 

조건문의 괄호 안에는 부울리언(boolean)타입이 아닌
여러가지 타입의 데이터가 입력될 수 있습니다.

if (바로여기) {}

while( 여기){}


그러한 데이터들은 모두 true, 혹은 false로 평가됩니다.

  • 예시
  • truthy

"hello"1은 각각 문자열(string)숫자(number) 타입을 갖습니다.

하지만 이 값들이 들어간 조건식은 true로 평가됩니다.

이러한 값들을 truthy 라고 합니다

  • falsy
  • undefinednull 은 실제로 false가 아니지만,

조건식에선 false로 평가됩니다.

이러한 값들을 falsy라고 합니다.

실수가 발생하는 포인트

null이나 undefined를 제외한 대부분의 값들은 조건식 내에서 true로 평가됩니다.


존재하지 않는 값을 가져온다면, null이나 undefined로 평가되니
조건문을 "대입된 값이 잘 로드되어졌는가?"를 따지는 데에 응용할 수 있습니다.


하지만 대입되는 값들의 종류를 잘 고려하지 못하면
의도와 전혀 다르게 작동하는 함수가 만들어집니다.

다음은 성분이 배열안에 존재하는지 판단하는 함수입니다.

성분값 x 와 배열 arrInput을 입력받아

indexof를 이용해 반환되는 숫자로 true / false를 판별합니다.

const checkIndex = function (x, arrInput) {
    const index = arrInput.indexOf(x)
    if (index) {  // index의 존재여부 판단
        console.log(`입력한 값 ${x}의 index는 ${index} 입니다.`)
        return index
        }
        else { 
        console.log(`입력값 ${x}은 해당 배열에 존재하지 않습니다.`)
        }
}



checkIndex("b", ["b",2,7,"y"])
//입력값 b은 해당 배열에 존재하지 않습니다.

checkIndex("c", ["b",2,7,"y"])
//입력한 값 c의 index는 -1 입니다

위의 예시에서 b는 분명 해당 배열에 존재합니다.
하지만 인덱스 값이 0이라, 조건문이 false로 평가되었습니다.

또, indexOf 메서드는 배열 안에 해당 값이 존재하지 않으면
undefinednull이 아닌 -1을 반환합니다.

그래서 index 값은 -1이 되었고 조건문은 true로 평가되었습니다.


이런 예상치 못한 작동을 막기 위해서
어떤 값들이 false로 판별되는지 정리해 놓을 필요가 있다고 느꼈습니다.

falsy 값 표
Value TypeValue
false Boolean 부울리안
0 Number 숫자
"" String 문자열
null null object 오브젝트
undefined undefined 정의되지않음
NaN NaN number 숫자

이외의 값들은전부 true로 평가됩니다.

읽어주셔서 감사합니다.

오류나 오탈자가 있다면 댓글로 알려주세요!

** 230518 수정

falsy라는 개념이 따로 있었습니다.
노마드 10주 스터디분들 감사합니다.

참고자료
https://developer.mozilla.org/en-US/docs/Glossary/Falsy

 

Falsy - MDN Web Docs Glossary: Definitions of Web-related terms | MDN

A falsy (sometimes written falsey) value is a value that is considered false when encountered in a Boolean context.

developer.mozilla.org