JavaScript에는 값의 부재를 나타내는 여러 방법이 있습니다. 이 페이지에서는 가장 일반적인 두 가지 방법인 null
및 undefined
데이터 유형을 설명합니다.
null
null
키워드는 의도적으로 정의된 값이 없음을 나타냅니다. null
는 원시 유형이지만 typeof
연산자는 null
가 객체임을 반환합니다.
이 오류는 JavaScript의 첫 번째 버전에서 이전되었으며 웹에서 예상되는 동작을 중단하지 않기 위해 의도적으로 해결되지 않은 상태로 남아 있습니다.
typeof null
> object
스크립트의 특정 시점에 할당된 값이나 명시적으로 없는 값을 반영한다는 점을 고려하여 변수를 null
로 정의할 수 있습니다. 기존 참조에 null
값을 할당하여 이전 값을 지울 수도 있습니다.
undefined
undefined
는 방금 선언된 변수 또는 의미 있는 값을 반환하지 않는 연산의 결과 값에 할당된 원시 값입니다. 예를 들어 브라우저의 개발자 콘솔에서 함수를 선언할 때 이러한 상황이 발생할 수 있습니다.
function myFunction() {}
> undefined
함수는 return
문이 값을 반환하지 않으면 undefined
을 명시적으로 반환합니다.
(function() {
return;
}());
> undefined
null
및 undefined
비교
undefined
와 null
는 기능적으로 중복되지만 용도는 다릅니다. 가장 엄격한 의미에서 null
는 의도적으로 '공백'으로 정의된 값을 나타내고 undefined
는 할당된 값이 없음을 나타냅니다.
null
와 undefined
는 대략적으로 동일하지만 엄격하게 같지는 않습니다.
느슨한 등호 연산자는 서로 다른 유형의 피연산자를 불리언 값으로 강제 변환하여 null
와 undefined
가 모두 false
가 되도록 합니다. 엄격한 등호 연산자는 서로 다른 데이터 유형의 피연산자가 같지 않은 것으로 간주합니다.
null == undefined
> true
null === undefined
> false
예약된 키워드 null
와 달리 undefined
는 전역 객체의 속성입니다. 이는 JavaScript 개발 초기에 내린 디자인 결정이며 이를 통해 기존 브라우저가 undefined
를 완전히 덮어쓸 수 있습니다. 최신 브라우저에서는 여전히 undefined
를 비전역 범위의 식별자로 사용하여 해당 선언의 범위 내에서 값을 재정의할 수 있습니다. undefined
를 식별자로 사용하지 마세요. 예기치 않은 동작이 발생할 수 있으며 코드베이스의 향후 유지관리자에게 혼란을 줄 수 있습니다.
이해도 테스트
typeof null
는 무엇을 반환하나요?
object
undefined
primitive
string