null
은 어떤 값이 의도적으로 비어있음을 표현하며 불리언 연산에서는 거짓으로 취급된다. 변수는 존재하나null
로 (값이) 할당된 상태, 즉 null
은 자료형이 정해진 상태이다. 또한 식별되지 않아 변수가 아무런 객체를 가리키지 않음을 표현한다. [1]
// 정의되지 않고 초기화된 적도 없는 a
a; // ReferenceError: a is not defined
// 존재하지만 값이나 자료형이 존재하지 않는 a
var a = null;
a; // null
함수가 유효한 값을 반환할 수 없는 경우, 명시적으로 null
을 반환한다. 예를 들어 조건에 부합하는 HTML 요소를 검색해 반환하는 document.querySelector()
또는 getElementById()
는 조건에 부합하는 HTML 요소를 검색할 수 없는 경우, null
을 반환한다.
var garage = document.querySelector('.myCar');
console.log(garage); // null
var garage = document.getElementById('#myCar');
console.log(garage); // null
또한 두 번째 매개변수로 배열을 전달하면 그 요소들을 차례대로 인수로 사용하는 apply 함수를 이용한 최댓값(Math.max)과 최솟값(Math.min)을 구하는 요소로도 쓰인다. 첫 번째 파라미터에 null
을 넣어준 뒤 배열의 요소들을 입력하면 최댓값 혹은 최솟값이 나오게 된다.
Math.max.apply(null, [1, 2, 3]); // -> 3
Math.min.apply(null, [1, 2, 3]); // -> 1
undefined
는 값이 없다는 것을 확인하는 값이다. 변수는 존재하나 어떠한 값도 할당받지 않아 자료형이 정해지지 않은 상태이다. 또한 메서드와 선언도 평가할 변수가 값을 할당받지 않은 경우에 undefined
를 반환한다. 함수는 값을 명시적으로 반환하지 않으면 undefined
를 반환한다.
var a;
console.log(a); // undefined
// 파라미터가 있는 함수를 호출
function a(x) {
console.log(x); // undefined
}
a(); // undefined