JavaScript에서 null과 undefined는 값이 없음을 나타내지만, 차이점이 존재합니다. 본 포스팅은 null과 undefined의 차이점을 소개합니다.


null

null은 값이 없음을 의미하는 JavaScript의 데이터 타입 중 하나다. 개발자가 의도적으로 변수에 값을 할당하지 않은 것을 명시하기 위한 용도로 사용한다.

예를 들어, 변수를 선언했지만 값을 할당하지 않은 경우 null을 사용할 수 있다.

const name = null;

null은 falsy한 값으로 조건문에서 false로 처리된다. 아래 코드를 실행하면 콘솔에 문자열 false가 출력된다.

const name = null;

if(name) {
  console.log('true');
} else {
  console.log('false');
}

undefined

undefined는 변수가 선언되었지만 값을 할당하지 않은 경우 사용된다. 변수를 선언할 때 값을 할당하지 않으면 변수는 자동으로 undefined가 할당된다.

아래는 변수를 선언하고 값을 할당하지 않은 경우다.

const name;
console.log(name); // undefined

undefined는 null과 마찬가지로 falsy한 값이므로 조건문에서 false로 처리된다. 아래 코드를 실행하면 콘솔에 문자열 false가 출력된다.

const name;

if(name) {
  console.log('true');
} else {
  console.log('false');
}

null과 마찬가지로 개발자가 변수 또는 객체에 undefined를 할당할 수 있다.

const name = undefined;
console.log(name); // undefined

차이점

null과 undefined는 값이 없음을 나타내지만, 의미가 다르다는 차이점이 있다. null은 개발자가 변수 또는 객체에 값이 없음을 명시적으로 표시하는 것이고 undefined는 값이 없음을 암시적으로 표시하는 것이다. 즉, null은 개발자가 직접 할당한 값이고 undefined는 값을 할당하지 않은 것을 의미한다.

또한 null은 객체(object) 타입이며, typeof 연산자를 사용하면 “object”를 반환한다. 반면에 undefined에 typeof 연산자를 사용하면 “undefined”를 반환한다.

console.log(typeof null); // object
console.log(typeof undefined); // undefined

사실 null은 object 타입이 아니라 null이라는 JavaScript의 기본 타입인데, JavaScript 프로그래밍 언어 개발자가 typeof 연산자에서 null을 체크하는 로직을 누락해서 object를 반환하는 것이다.

마지막으로 null과 undefined를 숫자형으로 변환하면 null은 0, undefined는 NaN이 된다. 아래 코드는 null과 undefined에 10을 더한 결과를 보여준다.

console.log(null + 10); // 10
console.log(undefined + 10); // NaN

Conclusion

null과 undefined는 모두 값이 없음을 나타내는 JavaScript의 데이터 타입 중 하나다. null은 개발자가 값이 없음을 명시적으로 할당한 것이며, undefined는 개발자가 값을 할당하지 않아서 자동으로 생긴 것이다. 둘의 차이점은 의미와 데이터 타입, 형변환 결과 등이 다르다는 것이며, 개발자는 값이 없음을 나타내기 위해 null과 undefined를 적절하게 사용할 수 있어야 한다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다