null과 undefined 차이

이재홍·2022년 6월 9일
0

Basic JS

목록 보기
8/18
post-thumbnail

null과 undefined

이 두 타입은 모두 JS에서 '값이 없음' 을 나타내는 타입임.
기본적으로 할당되지 않은 변수는 undefined 타입, undefined 타입은 변수 자체의 값 또한 undefined이다.
즉, 정의 되지 않은 것, 초기화 되어 있지 않거나 존재하지 않은 객체의 프로퍼티 및 존재하지 않는 배열의 원소에 접근 할때 얻어지는 값임

null 타입 변수의 경우는 명시적으로 값이 비어있음을 나타냄
아무것도 참조하고 있지 않다라는 의미, 주로 객체를 담을 변수를 초기화할 때 많이 사용
null 역시 undefined 와 마찬가지로 값이며 데이터 타입임

분명한 차이점은 undefined는 변수를 선언만 하더라도 할당되지만 null은 변수를 선언한 후에 null로 값을 바뀐다

undefined

undefined 타입의 값은 undefined가 유일함.
선언 이후 값을 할당하지 않은 변수 undefined 값을 가짐

var foo;
console.log(foo); // undefined

이처럼 개발자가 의도적으로 할당한 값이 아닌 JS 엔진에 의해 초기화된 값임.
변수를 참조 했을때 undefined가 반환되다면 참조한 변수가 선언 이후 값이 할당된 적이 없는 변수라는 것을 알 수 있음.

그렇다면 개발자가 의도적으로 undefined를 할당해야하는 경우는?
➡️ JS 엔진이 변수 초기화에 사용하는 이 값을 만약 개발자가 마음대로 할당한다면 undefined 의 본래의 취지와 어긋날 뿐더러 혼란을 줄 수 있어서 권장하지 않는다고 한다.

그런 의미에서 변수의 값이 없다를 명시하고 싶다면 undefined 가 아닌 null 을 할당한다.

null

null 타입 또한 null 이 유일하다.
프로그래밍 언어에서 null은 의도적으로 변수에 값이 없다라는 것을 명시할 때 쓴다.

변수가 기억하는 메모리 어드레스의 참조 정보를 제거하는 것을 의미하며 자바스크립트 엔진은 누구도 참조하지 않는 메모리 영역에 대해 가비지 콜렉션을 수행할 것이다.
https://poiemaweb.com/js-data-type-variable

var foo = 'Lee';
foo = null;  // 참조 정보가 제거됨

함수가 호출되었으나 유효한 값을 반환할 수 없는 경우, 명시적으로 null을 반환한다.

타입을 나타내는 문자열을 반환하는 typeof 연산자로 null 값을 연산해 보면 null이 아닌 object가 나온다. 이는 자바스크립트의 설계상의 오류.

var foo = null;
console.log(typeof foo); // object

따라서 null 타입을 확인할 때 typeof연산자를 사용하면 안되고 일치 연산자(===)를 사용해야함

var foo = null;
console.log(typeof foo === null); // false
console.log(foo === null);        // true

0개의 댓글