null 과 undefined 차이점
undefined
undefined는 데이터 타입이자, 값을 나타냅니다.
undefined는 '값이 할당되지 않은 상태’를 나타낼 때 사용합니다.
temp라는 변수를 선언하였지만, 값을 할당하지 않았기 때문에 temp변수에 undefined를 할당하게 됩니다.
변수만 선언했지만 값을 가지게 되어 undefined는 값이면서 데이터 타입인 것입니다.
let currentUser;
console.log(currentUser, typeof currentUser);
// undefined, "undefined"
null
null 타입 변수의 경우는 명시적으로 '값이 비어있음'을 나타내는데 사용합니다.
다시 말해, 아무것도 참조하고 있지 않다는 의미가 담겨 있으며 주로 객체를 담을 변수를 초기화할 때 많이 사용합니다.
null 또한 undefined과 마찬가지로 값이며 데이터 타입입니다.
분명한 차이점은 undefined는 변수를 선언만 하더라도 할당되지만 null은 변수를 선언한 후에 null로 값을 바꾼다는 점입니다.
let age = null;
console.log(age, typeof age);
// null, "object"
자바스크립트에선 null을 ‘존재하지 않는(nothing)’ 값, ‘비어 있는(empty)’ 값, ‘알 수 없는(unknown)’ 값을 나타내는 데 사용합니다.
위의 예제에선 age 변수를 'null'로 할당했는데, 이는 나이(age)를 알 수 없거나 그 값이 비어있음을 나타냅니다.
typeof null은 object, 자바스크립트 자체 버그입니다. null 체크가 필요할때는 '===' 연산자 사용하여 비교해주면 됩니다.
공통점: 이 두 타입은 모두 자바스크립트에서 '값이 없음'을 나타냅니다.
차이점:
null은 값은 값이지만 값으로써 의미 없는 특별한 값이 등록되어 있는 것이고,
undefined는 등록이 되어있지 않기 때문에 초기화도 정의되지도 않은 것입니다.
undefined는 미리 선언된 전역 변수(전역 객체의 프로퍼티)이며, null 은 선언, 등록을 하는 키워드인 것입니다.
출처: