null, undefined, undeclared 그리고 NaN

Haizel·2023년 5월 19일
1
post-thumbnail

기술 면접을 대비해 개념을 🍰 한입 크기로 잘라 정리합니다.
깃허브가 궁금하다면 놀러오세요!
👉 깃허브 보러가기 (Since 2023.05.10 ~ )

1. null

null은 객체 형태의 빈 값으로, 값이 없는 것을 의도적으로 명시하기 위해 사용합니다.

let name = null;
console.log(name) // null
console.log(typeof name) //object

2. undefined (미정의 변수)

undefined는 변수를 선언하고 값을 할당하기 이전의 값으로, 변수에 값이 할당되지 않은 상태를 말합니다.

변수는 변수 선언, 초기화, 할당의 3단계를 거쳐 생성되는데, 이때 자바스크립트 엔진이 변수를 초기화할 때 undefined를 사용합니다.

let name;
console.log(name); //undefined
console.log(typeof name); //undefined

3. undelared (미선언 변수)

접근 가능한 스코프 내에 변수의 선언 조차되지 않은 상태를 말합니다. undefined 타입을 갖습니다.

console.log(name); //ReferenceError: name is not defined
console.log(typeof name); //undefined

4. NaN

Not a Number의 약어로, 표현할 수 없는 수치형 결과를 나타냅니다. 이 속성은 값이 유효한 숫자가 아니라는 것을 나타냅니다.

단 주의해야 할 점은 NaN은 숫자 타입의 데이터 타입으로, 다만 컴퓨터로 표현할 수 없는 숫자 값을 의미합니다.

let age = NaN;
console.log(age); //NaN
Console.log(typeof age); // number

5. undefined == null vs undefined === null

console.log(undefined == null); //true 
console.log(undefined === null); //false

동등 연산자(==) 는 자료형이 다르면 자동형변환으로 자료형을 강제로 맞춰서 비교하는 연산자입니다.

undefined와 null은 각각 다른 자료형으로, 자동형변환을 거쳐 값을 비교하면 둘다 값이 없기 때문에 일치하다고 판단해 true를 반환합니다.

하지만 일치 연산자(===) 는 자료형까지 비교하기 때문에 undefined는 undefined타입, null은 의도적으로 빈 값이 들어간 object 타입이기 때문에 false가 반환됩니다.


💭 정리


undeclared 는 미선언 변수로, 접근 가능한 스코프에 변수조차 선언되지 않은 상태를 말합니다.

undefined는 미정의 변수로, 접근 가능한 스코프에 변수가 선언되었으나, 현재 아무런 값도 할당되지 않은 상태를 말합니다.

Null은 변수를 선언하고 ‘null’ 이라는 빈 값을 할당한 상태를 말합니다.

각 타입으로는 UndeclaredUndefinedundefined 타입, Null 은 객체 타입입니다.



📎 참고문서

profile
한입 크기로 베어먹는 개발지식 🍰

0개의 댓글