null vs undefined

space's pace·2022년 6월 30일
0

프론트엔드

목록 보기
10/15

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

JavaScript는 값이 대입되지 않은 변수 혹은 속성을 사용하려고 하면 undefined를 반환.

let foo;
foo // undefined

const obj = {};
obj.prop; // undefined

결론적으로  undefined데이터 타입이자, 값을 나타냅니다.
let box;  와 같이 변수를 선언하면 box 변수에 undefined를 할당하게 된다.
여기서 중요한 것이 변수의 초깃값이 undefined라는 점이다. 비록 변수만 선언했지만 값을 가진다는 말이다.
그렇기 때문에 값이면서 데이터 타입인 것이다.

이에 반해, null 타입 변수의 경우는 명시적으로 값이 비어있음을 나타내는데 사용합니다.

typeof null // 'object'
typeof undefined // 'undefined'

다시 말해서, 아무것도 참조하고 있지 않다라는 의미가 담겨 있으며 주로 객체를 담을 변수를 초기화할 때 많이 사용한다.
하지만, null 역시 undefined와 마찬가지로 값이며 데이터 타입입니다.
분명한 차이점은 undefined는 변수를 선언만 하더라도 할당되지만 null은 변수를 선언한 후에 null로 값을 바꾼다는 점입니다.

let foo; // 값을 대입한 적 없음
let bar = undefined; // 값을 대입함
foo; // undefined
bar; // undefined (??)
let obj1 = {}; // 속성을 지정하지 않음
let obj2 = {prop: undefined}; // 속성을 지정함
obj1.prop; // undefined
obj2.prop; // undefined (??)

비록 undefined가 '없음'을 나타내는 값일지라도, 대입한 적 없는 변수 혹은 속성과, 명시적으로 '없음'을 나타내는 경우를 구분을 할 수 있어야 코드의 의미가 명확해 질 것이다. 프로그래머의 입장에서 명시적으로 부재를 나타내고 싶다면 항상 null을 사용하는 것이 좋다.

null 과 undefined 는 등록, 저장 여부이다.
null 은 값은 값이지만 값으로써 의미없는 특별한 값이 등록되어 있는 것이고, undefined 는 등록이 되어있지 않기 때문에 초기화도 정의되지도 않은 것이다.
undefined 는 미리 선언된 전역변수(전역 객체의 프로퍼티)이며, null 은 선언,등록을 하는 키워드인 것이다.


출처: https://webclub.tistory.com/1 [Web Club:티스토리]

profile
블로그 이사 준비중!

0개의 댓글