728x90
반응형
✔️ 공통점
- 둘다 원시 자료형 (primitive)
- undefined 타입은 undefined 타입이 유일, null 값은 null 값이 유일
✔️ 차이점
- 개발자의 의도가 있느냐, 없느냐의 차이이다!
✔️ undefined (개발자의 의도 X)
: “아무 값도 할당받지 않은 상태”를 의미
- var 키워드로 선언한 변수는 호이스팅으로 올라간 후 undefined로 초기화됨.
그 이후 인터프레터가 해당 소스에 도달했을 때 할당한 값이 들어가게 됨.
console.log(a); //undefined
var a = 5;
- 변수를 선언한 이후 값을 할당하지 않은 변수를 출력하면 undefined가 반환된다.
let hello;
console.log(hello); //undefined
이렇게 undefined는 개발자가 의도적으로 할당하기 위한 값이 아닌, 자바스크립트 엔진이 변수를 초기화 할 때 사용한다.
그래서 개발자가 의도적으로 undefined 를 할당하는것은 권장되지 않는다.
그래서! 변수에 의도적으로 값이 없다고 할 때는 null 을 사용한다.
✔️ null (개발자 의도 O)
: ‘비어있는, 존재하지 않는 값’을 의미
- null은 NULL, Null과 다르다
- 의도적으로 변수에 값이 없다는 것을 명시하기 위해 undefined가 아닌 null 을 사용한다.
- null을 할당하면 변수가 이전에 참조하던 값을 명시적으로 참조하지 않겠다고 하는 것이므로,
자바스크립트 엔진이 이 변수의 메모리 공간에 대해 가비지 콜렉션을 수행한다.
( * 가비지 콜렉션 : 더이상 사용하지 않는 메모리를 자동으로 정리하는 것 )
728x90
반응형
'☁️ 구름 X kakao DeepDive > ☁️ HTML CSS JS' 카테고리의 다른 글
[JavaScript] 자바스크립트 classList (0) | 2025.01.13 |
---|---|
[JavaScript] Map, Filter, Reduce 메소드 (0) | 2025.01.12 |
[JavaScript] Event Loop (setTimeout, 동기와 비동기) (0) | 2025.01.12 |
[JavaScript] Closure (0) | 2025.01.11 |
[JavaScript] Iterator(반복기) & Generator(생성기) (0) | 2025.01.09 |