자바스크립트에는 '없음'을 나타내는 값이 두 가지가 있습니다.
undefined와 null
의미는 같지만 미세하게 다르고, 사용하는 목적도 다르다.
사용자가 명시적으로 지정할 수 있지만(비추천), 값이 존재하지 않을 때 자바스크립트 엔진이 자동으로 부여한다.
1. 값을 대입하지 않은 변수, 즉 데이터 영역의 메모리 주소를 지정하지 않은 식별자에 접근할때.
2. 객체 내부의 존재하지 않는 프로퍼티에 접근하려고 할때.
3. return 문이 없거나 호출되지 않는 함수의 실행 결과.
var a;
consol.log(a); // undefined : 값을 대입하지 않은 변수. 1번 이유
var obj = { a : 1 };
console.log(obj.a); // 1
console.log(obj.b); // undefiend : 객체 내부의 존재하지 않는 프로퍼티 접근. 2번 이유
console.log(b); ReferenceError : b is not defined
var func = function(){ };
var c = func(); // undefined : 반환(return) 값이 없으면 undefined를 반환으로 간주
배열의 경우 특이한 동작을 한다
var arr1 = [];
arr1.length = 3;
console.log(arr1); // [empty x 3]
var arr2 = new Array(3)'
console.log(arr2); // [empty x 3]
var arr3 = [undefined, undefined, undefined];
console.log(arr3); // [undefined,undefined,undefined]
비어있는 요소(empty)와 'undefined'를 할당한 요소는 출력 결과부터 다르게 나옵니다.
비어있는 요소(empty)는 순회와 관련된 많은 배열 메서드들의 순회 대상에서 제외 됩니다.
사용자가 직접 undefined를 할당하지 않는다.
값이 없으면 null을 씁시다.
값이 비어있음을 명시적으로 나타내는 'null'