
null과 undefined는 모두 자바스크립트의 데이터 타입입니다.
undefined는 선언은 됐지만 아직 value가 할당되지 않은 경우를 의미합니다. null은 '빈 값(blank)'을 의미하는데 사용자가 준 value입니다. 그래서 undefined와 다르게 자바스크립트가 자동적으로 null 이란 값을 줄 수는 없습니다.
포괄적인 의미로 '값이 없다'는 점에서 null과 undefined가 비슷한 것 같지만, 엄밀히 말하자면 둘은 같지 않습니다.
let name; // undefined
name = null; // null
console.log(null == undefined); // true
console.log(null === undefined); // false
엄격일치연산(===)는 value뿐만 아니라 type도 같아야 true가 나옵니다.
그러면 null과 undefined의 type은 어떤 타입일까요? 타입을 알아보기 위해서 'typeof' 연산자를 사용해봅시다.
console.log(typeof null); // object
console.log(typeof undefined); // undefined
null의 type이 object가 나왔습니다. 왜일까요? null은 위에 설명한대로 '값이 없음(blank)'을 의미하는 '할당된' value이기 때문입니다.
let msg; // msg 변수를 선언만 하고, 값을 할당(초기화)하지 않았습니다.
console.log(msg); // undefined
console.log(msg === undefined); //true
undefined 데이터 타입은 말 그대로 정의되지 않은 데이터입니다.let, const 키워드를 사용해서 변수를 정의할 때 초기화 하지 않았다면, 즉 변수를 선언만 하고 값을 할당하지 않았다면 변수의 값에는 undefined 가 할당됩니다.null 타입은 데이터 타입 중 하나 입니다. 말 그대로 값이 아예 없는 데이터입니다.typeof null 로 확인해보면 object 라고 나옵니다. null 은 말그대로 아무것도 아닌 빈 객체를 가리키고 있어 object 라고 나옵니다.console.log(msg === undefined) 에서 undefined 는 변수명이 아니라 예약된 키워드입니다. let msg = null;
msg라는 변수를 만들긴 만들었는데, 아직 값이 준비되지 않아서 없는 걸 명확히 하고 싶을 때 null 을 사용합니다.
선언은 했는데 아직 쓰고 있지 않다 는 뜻이 아님 !!
출처 : wecode