Javascript : undefined VS null VS NaN

HaByungNo·2022년 7월 20일
0
post-thumbnail

undefinednull 은 모두 원시(primitive) 자료형이다. 원시 자료형이란 객체가 아니면서 메서드도 가지지 않는 데이터를 말한다. 원시 값에는 7종류, string, number, bigint, boolean, undefined, symbol, null 이 존재한다.

undefined

undefined 는 원시값으로, 선언한 후 값을 할당하지 않은 변수 혹은 값이 주어지지 않은 인수에 자동으로 할당된다.

값을 할당하지 않은 변수는 undefined 자료형이다. 또한 메서드와 선언에서 평가할 변수가 값을 할당받지 않은 경우에도 undefined 를 리턴한다. 함수는 값을 명시적으로 반환하지 않으면 undefined 를 리턴한다.

그러니까 아직 정의 되지 않은 값이 바로 undefined 이다.

typeof 연산자와 undefined

var x;
if (typeof x === 'undefined') {
   // 이 문이 실행됨
}

typeof를 사용하는 이유 중 하나는 선언하지 않은 변수를 사용해도 오류를 던지지 않기 때문

// x를 선언한 적 없음
if (typeof x === 'undefined') { // 오류 없이 true로 평가
   // 이 문이 실행됨
}

if(x === undefined) { // ReferenceError

}

null

nullJavaScript 에서 어떤 값이 의도적으로 비어있음을 표현하며 불린(Boolean) 연산에서는 거짓으로 취급한다.

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


null과 undefined의 차이

동등 연산자(==)와 일치 연산자(===)의 차이에 주의하면서. 아래 예제를 살펴보자.

typeof null          // "object" (하위호환 유지를 위해 "null"이 아님)
typeof undefined     // "undefined"
null === undefined   // false
null  == undefined   // true
null === null        // true
null == null         // true
!null                // true
isNaN(1 + null)      // false
isNaN(1 + undefined) // true

그럼 NaN 은 뭐에요?

NaN 속성은 Not-A-Number(숫자가 아님) 를 나타낸다.

NaN 은 다른 모든 값과 비교(==, !=, ===, !==)했을 때 같지 않으며, 다른 NaN 과도 같지 않다. NaN 의 판별은 Number.isNaN() 또는 isNaN()을 사용하면 명확하게 수행할 수 있다. 오로지 NaN 만이 자기자신과 비교했을 때 같지 않음을 이용할 수도 있다.

NaN === NaN;        // false
Number.NaN === NaN; // false
isNaN(NaN);         // true
isNaN(Number.NaN);  // true

레퍼런스 :
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/undefined
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/null
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/NaN

profile
프라고

0개의 댓글