기술 면접을 대비해 개념을 🍰 한입 크기로 잘라 정리합니다.
깃허브가 궁금하다면 놀러오세요!
👉 깃허브 보러가기 (Since 2023.05.10 ~ )
null은 객체 형태의 빈 값으로, 값이 없는 것을 의도적으로 명시하기 위해 사용합니다.
let name = null;
console.log(name) // null
console.log(typeof name) //object
undefined는 변수를 선언하고 값을 할당하기 이전의 값으로, 변수에 값이 할당되지 않은 상태를 말합니다.
변수는 변수 선언, 초기화, 할당의 3단계를 거쳐 생성되는데, 이때 자바스크립트 엔진이 변수를 초기화할 때 undefined를 사용합니다.
let name;
console.log(name); //undefined
console.log(typeof name); //undefined
접근 가능한 스코프 내에 변수의 선언 조차되지 않은 상태를 말합니다. undefined 타입을 갖습니다.
console.log(name); //ReferenceError: name is not defined
console.log(typeof name); //undefined
Not a Number
의 약어로, 표현할 수 없는 수치형 결과를 나타냅니다. 이 속성은 값이 유효한 숫자가 아니라는 것을 나타냅니다.
단 주의해야 할 점은 NaN은 숫자 타입의 데이터 타입으로, 다만 컴퓨터로 표현할 수 없는 숫자 값을 의미합니다.
let age = NaN;
console.log(age); //NaN
Console.log(typeof age); // number
console.log(undefined == null); //true
console.log(undefined === null); //false
동등 연산자(==) 는 자료형이 다르면 자동형변환으로 자료형을 강제로 맞춰서 비교하는 연산자입니다.
undefined와 null은 각각 다른 자료형으로, 자동형변환을 거쳐 값을 비교하면 둘다 값이 없기 때문에 일치하다고 판단해 true를 반환합니다.
하지만 일치 연산자(===) 는 자료형까지 비교하기 때문에 undefined는 undefined타입, null은 의도적으로 빈 값이 들어간 object 타입이기 때문에 false가 반환됩니다.
undeclared
는 미선언 변수로, 접근 가능한 스코프에 변수조차 선언되지 않은 상태를 말합니다.
undefined
는 미정의 변수로, 접근 가능한 스코프에 변수가 선언되었으나, 현재 아무런 값도 할당되지 않은 상태를 말합니다.
Null
은 변수를 선언하고 ‘null’ 이라는 빈 값을 할당한 상태를 말합니다.
각 타입으로는 Undeclared
와 Undefined
은 undefined
타입, Null
은 객체 타입입니다.
📎 참고문서