null
값의 개념
null
값은
변수에 값이 명시적으로나 의도적으로 없음을 나타내는 값입니다.
명세서에서는 null
값을 의도적으로 객체 값이 없음을 나타내는 기본 값으로 정의하고 있지만,
객체 뿐 아니라 숫자와 문자열에서도 '값이 없음'을 명시적, 혹은 의도적으로 가리킬 때 사용됩니다.
주로 API에서 활용되며,
객체를 반환할 것으로 예상되지만 실제로 관련된 객체가 존재하지 않을 때의 값으로 null
을 사용합니다.
다음은 DOM API에서 null
값이 반환되는 예제입니다.
위 예제를 보면 알 수 있듯이 DOM을 다루는 API에서는 객체를 반환할 것으로 예상되지만 실제로 관련된 객체가 존재하지 않을 때 null
값을 반환합니다.
참고하세요!
jQuery에서 DOM을 다루는 API에서는 실제로 관련된 객체가 존재하지 않을 때 null
을 반환하지 않습니다. jQuery에서 DOM을 다루는 API에는 해당하는 요소 객체의 개수를 반환하므로, length
프로퍼티를 사용하면, 숫자 0
을 반환합니다.
null
값의 데이터 타입
null
값의 데이터 타입은 null
입니다.
그런데, typeof
연산자로 변수의 데이터 타입을 확인하면 "object"
를 반환합니다.
typeof
연산자는
피연산자의 데이터 타입을 문자열로 반환하는 연산자입니다.
typeof
연산자는 주어진 변수의 데이터 타입을 문자열로 반환하지만 null
값으로 확인하면 "null"
로 반환하지 않고 "object"
로 반환하기 때문에 혼란스러울 수 있습니다.
그래서 typeof
연산자로 변수의 데이터 타입을 확인하면 "object"
를 반환하기 때문에 null
값을 체크하려면 엄격한 비교 연산자( ===
)를 사용하여 null
과 비교하는 것입니다.
null
값을 boolean
타입으로 평가하면 false
null
값을 boolean
타입으로 평가하면 false
입니다.
주의할 점
null
값을 다룰 때에는 주의해야 할 점이 있습니다.
변수 자체가 선언되지 않았을 때
변수 자체가 선언되지 않았을 경우에는 null
값을 반환하지 않습니다.
Uncaught ReferenceError: ...is not defined 예외가 발생합니다.
null
값은 선언한 변수에 값이 명시적으로나 의도적으로 없음을 나타내는 값이지 변수가 선언되지 않았다는 의미가 아닙니다.
이럴 경우 다음과 같이 null
값을 체크할 수 있습니다.
null
과 undefined
의 차이점
null
값은 자바스크립에서 객체 뿐 아니라 숫자와 문자열에서 '값이 없음'을 명시적, 혹은 의도적으로 가리킬 때 사용됩니다.
undefined
는 '할당된 값 자체가 없다'라는 뜻으로 null
과는 차이가 있습니다.
null
이나 undefined
를 비교할 때에는 ==
와 ===
연산자의 차이점에 주의해야 합니다.
나중에라도 변수나 프로퍼티에 값을 할당할 필요가 있다면 undefined
보다는 null
이 더 적절합니다.
null
값의 올바른 이해
변수를 참조할 때 null
이 반환되면 변수에 값이 명시적으로나 의도적으로 없음을 쉽게 파악할 수 있습니다.
주로 API에서 활용되며, 객체를 반환할 것으로 예상되지만 실제로 관련된 객체가 존재하지 않을 때의 값으로 null
을 사용합니다.
명세서
명세서 사양 | |
---|---|
null
|
ECMAScript Language Specification #sec-null-value |
브라우저 호환성
값 |
데스크탑 Chrome
|
데스크탑데스크탑 Edge
|
데스크탑 Firefox
|
Safari
|
---|---|---|---|---|
null
|
1 | 12 | 1 | 1 |
참고 문헌
- MDN - null
- 모던 자바스크립트 Deep Dive(저자 이웅모) 2020 - 데이터 타입 - undefined 타입: 65~ 67쪽
- 자바스크립트 완벽 가이드(저자 데이비드 플래너건) 2011 - 타입, 값, 변수 - null과 undefined: 51~52쪽