null 및 정의되지 않음

JavaScript에는 값의 부재를 나타내는 여러 방법이 있습니다. 이 페이지에서는 가장 일반적인 두 가지 방법인 nullundefined 데이터 유형을 설명합니다.

null

null 키워드는 의도적으로 정의된 값이 없음을 나타냅니다. null는 원시 유형이지만 typeof 연산자는 null가 객체임을 반환합니다. 이 오류는 JavaScript의 첫 번째 버전에서 이전되었으며 웹에서 예상되는 동작을 중단하지 않기 위해 의도적으로 해결되지 않은 상태로 남아 있습니다.

typeof null
> object

스크립트의 특정 시점에 할당된 값이나 명시적으로 없는 값을 반영한다는 점을 고려하여 변수null로 정의할 수 있습니다. 기존 참조에 null 값을 할당하여 이전 값을 지울 수도 있습니다.

undefined

undefined는 방금 선언된 변수 또는 의미 있는 값을 반환하지 않는 연산의 결과 값에 할당된 원시 값입니다. 예를 들어 브라우저의 개발자 콘솔에서 함수를 선언할 때 이러한 상황이 발생할 수 있습니다.

function myFunction() {}
> undefined

함수는 return이 값을 반환하지 않으면 undefined을 명시적으로 반환합니다.

(function() {
    return;
}());
> undefined

nullundefined 비교

undefinednull는 기능적으로 중복되지만 용도는 다릅니다. 가장 엄격한 의미에서 null는 의도적으로 '공백'으로 정의된 값을 나타내고 undefined는 할당된 값이 없음을 나타냅니다.

nullundefined대략적으로 동일하지만 엄격하게 같지는 않습니다. 느슨한 등호 연산자는 서로 다른 유형의 피연산자를 불리언 값으로 강제 변환하여 nullundefined가 모두 false가 되도록 합니다. 엄격한 등호 연산자는 서로 다른 데이터 유형의 피연산자가 같지 않은 것으로 간주합니다.

null == undefined
> true

null === undefined
> false

예약된 키워드 null와 달리 undefined전역 객체의 속성입니다. 이는 JavaScript 개발 초기에 내린 디자인 결정이며 이를 통해 기존 브라우저가 undefined를 완전히 덮어쓸 수 있습니다. 최신 브라우저에서는 여전히 undefined를 비전역 범위의 식별자로 사용하여 해당 선언의 범위 내에서 값을 재정의할 수 있습니다. undefined를 식별자로 사용하지 마세요. 예기치 않은 동작이 발생할 수 있으며 코드베이스의 향후 유지관리자에게 혼란을 줄 수 있습니다.

이해도 테스트

typeof null는 무엇을 반환하나요?

object
undefined
primitive
string