-
null과 undefined 비교JavaScript 2022. 9. 23. 11:06
1. null은 비어 있는 값. undefined는 변수를 선언만 하고 값이 할당되어 있지 않은 것.
let name1 = null console.log(name) // null 을 출력 let name2 console.log(name2) // undefined를 출력
빈 값이라는 점에서 null과 undefined는 같지만, 자료형을 비교하면 다르다.
> undefined==null; < true > undefined===null; < false
2.undefined 의 자료형
undefined는 보통 반환할 결괏값이 없을 때 나온다.
console.log 명령어의 출력은 있지만, 그 자체로 어떤 결괏값이 없기 때문에 undefined 반환.
> console.log('Hello, undefined!'); Hello, undefined! < undefined
typeof로 자료형을 확인하면 그 자체로 undefied 반환.
> typeof undefined < "undefined"
undefined는 불 값으로 형 변환하면 false.
> !!undefined; < false
그러나 undefined 자체는 false와 같지 않다. 다른 거짓인 값들과도 같지 않다.
> undefined==false < false > undefined == 0; < false > undefined == ''; < false
3.null 의 자료유형
undefined와 마찬가지로 null도 불 값으로 형 변환하면 false.
> !!null; < false
하지만 null은 false와 같지 않다. 다른 거짓인 값들과도 같지 않다. (이 부분은 undefined도 마찬가지다.)
> null==false; < false > null==0; < false > null==''; < false
문제는 typeof 로 확인한 null의 자료형이다.
> typeof null < "object"
원래는 "null"이 나오는 것이 맞다. 그러나 결괏값은 "object".
이 현상은 자바스크립트에서 유명한 버그이다.
언어가 만들어진 초창기의 실수이어서,
type of null 을 사용한 모든 코드에 영향을 주기 때문에 수정할 수 없다고 한다.
따라서 값이 null인지 확인하기 위해서는 === null을 사용해야 한다.
4. 비교연산자 == 관계가 헷갈릴 때.
하지만 사실, 헷갈리면 === 을 쓰면 될 일이다.
이 표를 굳이 참고할 일은 없을 것이라고 지혜로운 누군가가 알려주었다.
'JavaScript' 카테고리의 다른 글
불변성에 대해2 : Nested Object, 방어적 복사, 불변객체생성 (0) 2022.09.23 불변성에 대해1 : 기본형 데이터와 참조형 데이터 (0) 2022.09.23 형변환 (type casting)1 : 문자열과 숫자 (1) 2022.09.23 느슨한 타입(loosely typed)의 동적(dynamic) 언어 (0) 2022.09.23 == 와 === 차이 (0) 2022.09.23