'null' VS 'undefined' (feat. js, ts)

starkensin·2020년 8월 18일
0
post-thumbnail

비슷해 보이는 nullundefined은 미묘한게 우리를 헷깔리게 합니다.

한마디로 정리해보자면
null: 값이 없다는 것을 null값을 넣어줌으로써 명시적으로 표현해주자.
undefined: 값 자체가 안들어와 있는거로 생각하자.

let a; // 초기화 하지 않고 변수 선언
console.log(a); // 출력
결과: undefined

undefined는 값 자체가 안들어와 있는 것을 의미한다고 생각하면 편합니다.
자바스크립트에서 변수를 선언하고 할당을 안하면 다음과 같이 그 안에는 undefined로 초기화가 되어 있다고 볼 수 있습니다.

감이 오시나요? 이러한 미묘한 차이 때문에 타입스크립트에서 null과 undefined를 사용할 때 주의를 기울여야합니다!

다음과 같이 변수를 선언했을 때,

b는 바로 사용할 수 있고, a는 그렇지 않습니다. 왜 그럴까요? 변수 a는 null 타입으로 선언 되어 있고, null은 값이 없다는 것을 명시적으로 채워줘야만 합니다.

반면 b는 undefined 타입으로 선언되어 있고, undefined는 앞서 위에서 살펴본 바에 의해 사용할 수 있습니다.

지금까지 비슷하지만 미묘하게 다른 nullundefined에 대해 살펴봤습니다.
타입스크립트 Coding guidelines에서 타입스크립트 팀은 typesciprt 오픈소스 가이드라인에서 null을 사용하지 않는 것을 규칙으로하고 있습니다. 물론 이러한 사항은 권고일 뿐이며 모든 타입스크립트 커뮤니티와 사용자에게 적용되길 바라지는 않습니다.

이번 기회를 통해 미묘하지만 다른 nullundefined에 대해 한번 더 생각해보게 됩니다.

0개의 댓글