bigfile57
욕심이 많은 사람
bigfile57
전체 방문자
오늘
어제
  • 분류 전체보기 (18)
    • 멋사 FE 과정 (10)
    • 멋사 FE 과정 실습 (1)
    • TIL (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Position
  • CSS
  • float
  • BFC
  • 멋쟁이사자
  • overflow

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
bigfile57

욕심이 많은 사람

[05/02 TIL] Null, undefined, NaN
TIL

[05/02 TIL] Null, undefined, NaN

2022. 5. 2. 18:39

Null, undefined 차이와 용도

undefined 와 null 은 없음을 나타내는 의미지만 미세하게 다르고, 사용하는 목적도 다릅니다

undefined는 사용자가 명시적으로 지정할 수있고 값이 존재하지 않을 때 엔진이 자동부여 하는 경우도 있습니다.

사용자가 값을 지정할 것같은 상황에도 지정돼지 않은 다음 세 경우에 엔진은 자동으로 undefined를 반환합니다

  • 값을 대입하지 않은 변수, 데이터 영역의 메모리 주소를 지정하지 않은 식별자에 접근할 때
    - 
    정확히는 아무것도 할당하지 않고 끝나지만 변수a 에 접근하고자 할 때 엔진에서 undefined를 반환

존재하지 않은 프로퍼티에 접근할 때

  • 객체 내부의 존재하지 않는 프로퍼티에 접근하려고 할 때

값을 대입하지 않은 변수에 접근할 때

  • return 문이 없거나 호출되지 않는 함수의 실행 결과

반환 값이 없으면 undefined 를 반환한 것으로 한다

undefined는 어떤 변수에 값이 존재하지 않는 경우 의미 그자체가 값입니다.
null 이라는 애초에 비어있음을 명시적으로 나타내고 싶을 때 사용하는 값이 있는데
굳이 명시적으로 undefined를 할당해서 사용할 필요가 없습니다.
따라서 undefined는 '값을 대입하지 않은 변수에 접근하고자 할 때 엔진이 반환해주는 값' 으로만 존재하게 규칙을 따르면 됩니다.

※ typeof null 이 object 라는 결과가 나오는데 이건 자바스크립트 자체 버그입니다.

그리고 null 인지 아닌지 판별하려면 동등연산자 == 대신 일치연산자 === 를 사용해야만 판별 할 수 있습니다.

 

NaN : number 타입이고 '숫자가 아님'을 의미하는 숫자
주로 isNaN() 함수를 이용해 사용한다
주의할 점은 isNaN(null) 의 결과값이 false 라는 점인데 내부동작을 살펴보면 isNaN(Number(null)) 로 작동되는데
Number(null) 의 값이 0 이 되기 때문에 isNaN(0) = false 를 출력하게 된다
따라서 혼란을 막기위해 더 엄격한 버전인 Number.isNaN() 을 사용하기도 한다.
주어진 값의 유형이 Number 이고 값이 NaN이면 true, 아니면 false 가 나온다

+ Number.isNaN(undefined) 는 isNaN(undefined) 와 다르게 true 를 반환하는데 
   이는 NaN를 반환하는 연산중에 Number(undefined)가 있기 때문이다. 이외에도 여러가지가 있는데 참고 링크 기록
https://on1ystar.github.io/javascript/2021/03/30/JavaScript-7/

 

Javascript isNaN() vs Number.isNaN() - 신뢰성 있는 NaN 판별 · on1ystar

Javascript isNaN() vs Number.isNaN() - 신뢰성 있는 NaN 판별 30 Mar 2021 의문점이나 지적 등의 관심 및 조언을 위한 댓글이나 메일은 언제나 환영이고 감사합니다. What is the NaN NaN 값은 산술 연산이 정의되지

on1ystar.github.io

NaN는 유일하게 자기자신과 비교했을 때 같지 않는 특성이 있는데 어디다 응용할지 모르니 일단 기록해둔다

 

'TIL' 카테고리의 다른 글

[JS] Constructor 메서드와 prototype 메서드의 차이  (0) 2022.05.17
[05/03 TIL] JS, CSS특강  (0) 2022.05.04
[04/28 TIL] JS 기초, CSS특강  (0) 2022.04.29
[04/27 TIL] Tailwind CSS , 이력서, CSS특강 과제  (0) 2022.04.28
[04/26 TIL] sass, bootstrap, 영화 정보 페이지 구현 과제  (0) 2022.04.27
    'TIL' 카테고리의 다른 글
    • [JS] Constructor 메서드와 prototype 메서드의 차이
    • [05/03 TIL] JS, CSS특강
    • [04/28 TIL] JS 기초, CSS특강
    • [04/27 TIL] Tailwind CSS , 이력서, CSS특강 과제
    bigfile57
    bigfile57

    티스토리툴바