JavaScript

[JavaScript] undefined vs null vs NaN 파헤치기

Will_ 2024. 7. 9. 14:35
반응형

안녕하세요, 윌입니다.

 

undefined, null, NaN에 대해 정리해봅니다.

 

자바스크립트에서 undefined, null, NaN는 각각 고유한 의미와 용도를 가진 특수한 값입니다. 이 값들은 각각의 상황에서 다르게 동작하며, 그 차이점을 이해하는 것이 중요합니다.

 

1. undefined

undefined는 선언되었지만 값이 할당되지 않은 변수에 자동으로 할당되는 값입니다. 또한, 함수가 명시적으로 값을 반환하지 않을 때도 undefined가 반환됩니다.

 

특징

  • 선언은 되었지만 초기화되지 않은 변수의 기본 값:
let a;
console.log(a); // undefined
  • 객체의 존재하지 않는 프로퍼티에 접근할 때:
let obj = {};
console.log(obj.property); // undefined
  • 함수가 값을 반환하지 않을 때:
function doNothing() {}
console.log(doNothing()); // undefined

2. null

null은 의도적으로 변수에 '없음' 또는 '빈 값'을 할당할 때 사용합니다. 이는 값이 없음을 명시적으로 나타내기 위해 사용됩니다.

 

* 의도적으로 빈 값을 할당했다는 점에서 undefined와는 확연히 다른 용도로 사용됩니다!

특징

  • 의도적으로 빈 값을 할당:
let a = null;
console.log(a); // null
  • 객체의 프로퍼티가 의도적으로 빈 값을 가질 때:
let obj = { property: null };
console.log(obj.property); // null
  • typeof null은 "object"를 반환하는 특이한 점:
console.log(typeof null); // "object"

 

3. NaN (Not-a-Number)

NaN는 숫자가 아닌 값을 숫자 연산으로 처리하려고 할 때 발생합니다. 이는 계산 결과가 유효한 숫자가 아님을 나타냅니다.

특징

  • 숫자가 아닌 값을 숫자 연산에 사용:
console.log("abc" / 2); // NaN
  • NaN은 자기 자신과도 같지 않은 유일한 값:
console.log(NaN === NaN); // false
  • isNaN 함수를 사용하여 NaN을 확인:
console.log(isNaN(NaN)); // true
console.log(isNaN("abc")); // true
  • Number.isNaN 함수는 더 정확하게 NaN을 확인:
console.log(Number.isNaN(NaN)); // true
console.log(Number.isNaN("abc")); // false

 

 

비교 요약

  • undefined: 변수는 선언되었지만 아직 값이 할당되지 않았음을 의미.
  • null: 변수가 의도적으로 빈 값을 가짐을 의미.
  • NaN: 숫자가 아닌 값을 숫자 연산에 사용하여 유효하지 않은 숫자 결과가 나왔음을 의미.

이 값들은 자바스크립트에서 흔히 사용되며, 각 상황에 맞게 적절히 사용하여 코드를 명확하게 할 수 있습니다.

반응형