자바스크립트에서는 몇 가지 경우
undefined
가 자동으로 반화된다.
1) 변수를 선언하고, 값 할당이 없을 때
2) 객체, 배열에 할당되지 않은key
나index
에 접근하려 할 때
3)return
문이 없거나 호출되지 않는 함수를 실행할 때let a; console.log(a); // undefined const obj = {prop: 'hello'}; console.log(obj.prop); // hello console.log(obj.prop2); // undefined const arr = [1, 2, 3]; console.log(arr[1]); // 2 console.log(arr[3]); // undefined function f() {}; const func = f(); console.log(func); // undefined
배열의 크기는 할당 됐지만 값이 없는
index
는empty
로 표시const arr = []; arr.length = 3; console.log(arr); // [empty × 3] (Chrome) // [ <3 empty items> ] (VSCode) const arr2 = new Array(3); console.log(arr2); // [empty × 3] (Chrome) // [ <3 empty items> ] (VSCode) const arr3 = []; arr3[1] = 1; console.log(arr3); // [empty, 1] // [ <1 empty item>, 1 ]
사용자가 명시적으로
undefined
를 부여할 수도 있음const a = undefined; console.log(a); // undefined
명시적으로
undefined
를 부여했을 때는undefined
자체가 값으로 할당 되지만
그렇지 않고 자바스크립트가 자동으로undefined
를 반환해 줄 때는 값 자체가 없음을 의미하므로
두 경우에 차이가 있다.
바로 위와 같이 값이 없음을 나타내고 싶은 경우
undefined
보다는null
을 사용하는게 일반적이다.
그런데 자바스크립트(es6 기준) 자체 버그로null
의 타입은object
로 나타난다.console.log(typeof null); // object