undefined
는 보통 반환할 결과가 없을때 돌려주는 값이다. console.log
명령어는 콘솔에 무언가를 출력하지만, 그 자체로는 결과 값이 없기 때문에 undefined
가 반환된다.
typeof undefined;
>"undefined"
undefined도 자료형이다.
!!undefined;
>false
단, undefined랑 false가 같지 않다. 다른 거짓 값도 마찬가지다.
undefined == false;
>false
undefined == 0;
>false
undefined == '';
>false
다른 자료형으로는 null
이 있다. undefined
처럼 빈 값을 의미하지만 같지는 않다.
undefined == null;
>true
빈 값이라는 점에서 같지만, 자료형까지 비교하면 다르다.
undefined === null;
>false
undefined와 마찬가지로 null의 boolean값도 형 변환할 때 false가 된다.
!!null;
>false
하지만 null은 false가 아니다.
null == false;
>false
null == 0;
>false
null == '';
>false
null의 자료형을 typeof로 확인했을 때 특이한 것을 발견할 수 있다.
typeof null;
>"objecct"
결과 값이 “null”이 아니라 “object”다. 이 현상은 자바스크립트에서 유명한 버그다.
원래는 null 값이 나와야하지만, 언어가 만들어진 초창기 실수 때문에 “object”가 되었다..
그 이후로는 바꿀 수 없게 되었슴다…. 따라서 값이 null인지 확인하기 위해서는 === null
을 사용해야 한다!
null과 undefined는 둘 다 빈 값이라서 어떨 때 사용하는지 헷갈릴 수 있다. undefined는 기본값이라는 의미라도 있는데, null은 역할이 없다.