null과 undefined

진성·2022년 6월 13일
0

null

null은 자바스크립트의 원시 값 중 하나로, 어떤 값이 의도적으로 비어있음을 표현하며 불리언 연산에서는 거짓으로 취급한다.

null은 undefined와 같이 전역 객체의 속성에 대한 식별자가 아니다.
즉, undefined는 모든 전역 객체의 대한 식별자다.
대신 null은 식별되지 않은 것을 표현한다.
변수가 아무런 객체를 가리키지 않음을 표현한다.
API에서 null은 종종 관련된 객체가 존재 하지 않을 때 그 객체 대신 사용한다.

// undefined는 전역 객체의 속성
let foo
foo // undefined

// null은 전역 객체의 속성이 아님
let noo = null
noo // null

null 또는 undefined를 검사할 때, 동등 연산자와 일치 연산자의 차이를 주의해야 한다.
동등 연산자는 주로 숫자형 형변환이 일어난다.
하지만 null과 undefined는 서로에게 동등하다.
그렇다고 다른 falsy값과는 동등하지 않다.

typeof null // "object"
typeof undefined // "undefined" 

null == undefined // true
null === undefined // false
null == "" // false
undefined == "" // false

undefined

undefined는 전역 객체의 속성이며 원시 값을 나타낸다.
즉, undefined는 전역 스코프에서의 변수이다.
undefined의 초기 값은 undefined 원시 값이다.
이는 선언한 후 값을 할당하지 않은 변수 혹은 값이 주어지지 않은 인수에 자동으로 할당된다.

let a

console.log(a) // undefined

또한 메서드와 함수의 값을 명시적으로 반환하지 않으면 undefined를 반환한다.

function foo () {
  return
}
foo() // undefined

null 과 undefined의 차이 정리

  • undefined는 전역 객체 속성이고 null은 아니다.
  • null은 의도적으로 비어있음을 표현하기 위해 할당하고 undefined는 값이 할당되어 있지 않은 변수 또는 함수에서 자동으로 반환된다.
  • null의 데이터 타입은 "object"이며, undefined의 데이터 타입은 "undefined"이다.
  • 동등 연산자와 일치 연산자의 차이를 주의하여 사용하여야 한다.

출처 : mdn [null], mdn [undefined], 자바스크립트 형변환

profile
풀스택 진행중...

0개의 댓글