crystal_dev
Crystal 개발 일지
crystal_dev
전체 방문자
오늘
어제
  • 분류 전체보기 (58)
    • Web (0)
    • Frontend (32)
      • React (0)
      • Javascript (17)
      • HTML & CSS (14)
      • DOM API (0)
    • 사이드프로젝트 (1)
      • Flask (1)
    • CS (0)
      • Network (0)
    • 형상관리 & 개발도구 (2)
      • git (1)
      • VSCode (1)
    • 알고리즘 (19)
      • 백준 알고리즘 (1)
      • 프로그래머스 (17)
      • 기타 (1)
    • Error (2)
      • javscript (1)
      • python (1)
    • blog (2)
      • daily (1)
      • 회고 (0)
      • it참고 (0)
      • 항해99 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 프론트엔드
  • css정렬
  • js 기본
  • js
  • Algorithm
  • userfont
  • Javascript
  • 자바스크립트
  • CSS
  • 풀이
  • match()
  • 알고리즘
  • js기본
  • let
  • javascript error
  • frontend
  • css위치
  • 느슨한타입
  • Programmers
  • 프로그래머스

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
crystal_dev

Crystal 개발 일지

[TIL] Undefined, null 의 차이점
Frontend/Javascript

[TIL] Undefined, null 의 차이점

2022. 5. 11. 23:22
728x90
반응형

 

 

undefined와 null의 차이

undefined와 null은 같아보이지만 차이점이 존재한다. 

1. undefined

undefined는 원시값(Primitive type) 중 하나로, 자바와는 달리 자바스크립트는 변수에 저장하는 값에 따라서 자료형이 결정된다는 특징이 있다. 이로 인해 자바스크립트 엔진이 해당 변수의 자료형이 정해지지 않는(Undefined) 상태(초기화 되지 않은 상태)임을 나타낼 때 자동으로 undefined를 반환한다.

 

다음과 같은 경우에 자바스크립트 엔진이 undefined를 자동으로 반환한다. 

  • 값을 할당하지 않은 변수나 값이 주어지지 않은 인수
  • 메서드와 선언에서 변수가 할당받지 않을 때
  • 함수가 값을 return하지 않을 때 

 undefined는 예약어가 아니므로, 변수이름으로 사용할 수 있지만,

유지보수와 디버깅에 어려움을 겪을 수 있기 때문에 피하는 것이 좋다.

 

 

2.null

null 또한 원시값(Primitive type) 중 하나로, 개발자가 해당 변수의 값이 의도적으로 비어있음을 나타낼 때 표현한다. null은 존재하는 상태를 나타낸다.

 

 

💡 typeof 연산자로 type을 확인하면 undefined는 undefined 타입이고, null은 object 타입이라고 나타난다.

자바스크립트의 유명한 버그이다. 자바스크립트 스펙상 null의 타입이 null이 나와야 하지만, 언어가 만들어진 초창기 실수로 인해 object가 되었다고 한다.  따라서 null인지 확인하기 위해서는 === 으로 null값인지 비교해봐야 한다.

 

728x90
반응형
저작자표시 (새창열림)

'Frontend > Javascript' 카테고리의 다른 글

[TIL] 변수명 짓기  (0) 2022.05.23
[TIL] 변수 선언하기  (0) 2022.05.23
[TIL] =, ==, === 의 차이점과 객체의 비교  (0) 2022.05.10
[TIL] 불 값(boolean, 값들의 비교)  (0) 2022.05.10
[TIL] 숫자 기본 (parseInt, NaN)  (0) 2022.05.10
    'Frontend/Javascript' 카테고리의 다른 글
    • [TIL] 변수명 짓기
    • [TIL] 변수 선언하기
    • [TIL] =, ==, === 의 차이점과 객체의 비교
    • [TIL] 불 값(boolean, 값들의 비교)
    crystal_dev
    crystal_dev
    어제보다 더 나은 오늘의 내가 되자 ✧ʕ̢̣̣̣̣̩̩̩̩·͡˔·ོɁ̡̣̣̣̣̩̩̩̩✧

    티스토리툴바