코어 자바스크립트
책의 1장 데이터 타입 내용을 정리한 글이다.
자바스크립트에는 없음
을 나타내는 값이 두 가지가 있다. 바로 undefined
와 null
이다. 두 값은 의미가 미세하게 다르고 사용하는 목적 또한 다르다.
우선 undefined
부터 살펴보자.
undefined
는 사용자가 명시적으로 지정할수도 있지만 값이 존재하지 않을 때 자바스크립트 엔진이 자동으로 부여하는 경우도 있다. 그러면 자바스크립트 엔진이 자동으로 부여하는 경우에 대해 살펴보자.
자바스크립트 엔진은 사용자가 응당 어떤 값을 지정할 것이라고 예상되는 상황임에도 실제로는 그렇게 하지 않았을 때 undefined
를 반환한다. 다음 세 경우가 이에 해당한다.
값으로써 어딘가에 할당된 undefined
는 실존하는 데이터인 반면, 자바스크립트 엔진이 반환해주는 undefined
는 문자 그대로 값이 없음을 나타내는 것이다.
위에서 언급했듯이 undefined
는 사용자가 명시적으로 지정하는 경우와 값이 존재하지 않을 때 자바스크립트 엔진이 자동으로 부여하는 경우로 나뉜다. 그러면 내가 지금 보고 있는 undefined
가 내가 어딘가에 할당한 값인지, 자동으로 부여된 값인지 혼란스러울 수 있다. 이 혼란을 피할 방법은 규칙을 정하는 것이다. 자바스크립트 엔진이 반환하는 경우는 우리의 통제 범위를 벗어나므로 모든 undefined
가 오직 이 경우만 해당하게끔 해주는 것이다. 즉, 직접 undefined
를 할당하지 않기만 하면 된다.
같은 의미를 가진 null
이 있는데 굳이 undefined
를 써야 할 이유가 없다. 비어있음
을 명시적으로 나타내고 싶을 때는 undefined
가 아닌 null
을 쓰면 된다. null
은 애초에 이런 용도로 만든 데이터 타입이다. 이런 규칙을 따르는 한 undefined
는 오직 값을 대입하지 않은 변수에 접근하고자 할 때 자바스크립트 엔진이 반환해주는 값으로서만 존재할 수 있다.