본문 바로가기

Web/JavaScript

JavaScript, Undefined & null & Nan

JavaScript 문법에서 쉽게 헷갈릴 수 있는 개념들을 정리해봅시다.

 

1. Undefined

(1) Undefined란?

 

var, let, const로 우리가 변수선언하게 되면

 

자바스크립트 엔진은 우리가 만든 변수 메모리 공간

 

어떠한 데이터할당 되기 전까지 undefined 라는 값을 넣어놓습니다.

 

명시적으로 데이터를 할당하지 않아도 자동으로 undefined값을 넣어놓는다가 핵심입니다.

 

예제로 살펴봅시다.

 

let songye;
console.log(songye);

값이 할당되지 않은 let 변수를 console.lo로 찍어보면 다음과 같이

undefined출력되는 것을 확인할 수 있습니다.

(2) Undefined의 Type

console.log(typeof(undefined));

undefinedtypeundefined입니다.

 

2. null

null은 사용자가 명시적(의도적)으로 변수 메모리 공간이 비어있음

 

나타낼 때 사용합니다.

let a = null;
console.log(a);
console.log(typeof a);

null 출력

사용자가 a라는 let으로 선언한 변수에다 null을 명시적으로 넣어

 

변수 메모리 공간이 비어있음을 코더의 의도를 담아 알려주는 것입니다.

 

또한 nulltype object임을 알 수 있습니다.

 

undefinednull차이주체의 차이가 가장 큽니다 (이거 말고도 많지만,,)

 

그래서 우리는 명시적이든 아니든간에 빈 값들을 확인해야 합니다.

 

다음 레퍼런스는 Null Check일반적인 경우를 포함하는 레퍼런스니 참고 바랍니다.

 

[JavaScript] Null check, 빈 값 체크

[JavaScript] Null check, 빈 값 체크 v2019 JavaScript는 데이터형에 대해서 꽤 자유로운 언어입니다. var value = 1; // Number 형 1 console.log(value, typeof value); // 1 number value = "1" // String 형 1 console.log(value, typeof value

sanghaklee.tistory.com

 

3. Nan

NanNot a number의 줄임말입니다.

 

계산 중에 에러가 발생했다는 것을 알려주며

 

부정확하거나 정의되지 않은 수학 연산을 사용하면 NanReturn합니다.

 

비교적 자바스크립트는 수학연산이 안전한데요 왜냐하면

 

다른 언어에서 Compile Error를 뿜고 죽어야할 것 같은 경우에도 살아남는 걸 볼 수 있기 때문

 

실제 Nan을 Return하는 대표적인 예를 알아봅시다

 

문자를 숫자로 나누는 경우

alert( "Songye" / 2 );

Nan

Nan의 Type

alert(typeof(NaN));

Typeof(NaN)

연산 중 에러처리를 위해 만들어졌기 때문에 Typenumber임을 확인할 수 있습니다.

4. 결론

항목 Type 의도
undefined undefined 비명시적 빈 값
null object 명시적 빈 값
NaN number 연산 Error Handling

 

 

equal operator에 대한 설명은 생략하겠습니다

 

+ 24.03.06 추가

null과 undefined는 숫자형으로 변환 시 결과가 다르다는 점에 유의하시기 바랍니다.

null은 0이 되고 undefined는 NaN이 됩니다.

 

형 변환

 

ko.javascript.info

 

'Web > JavaScript' 카테고리의 다른 글

JavaScript, Set 자료구조  (0) 2024.03.12
JavaScript, Map 자료구조  (0) 2024.03.12
JavaScript, 내장 메소드 정리  (0) 2024.03.11
JavaScript, let, var의 차이  (0) 2024.03.04
Intersection Observer  (0) 2024.02.15