Null, undefined 차이와 용도
undefined 와 null 은 없음을 나타내는 의미지만 미세하게 다르고, 사용하는 목적도 다릅니다
undefined는 사용자가 명시적으로 지정할 수있고 값이 존재하지 않을 때 엔진이 자동부여 하는 경우도 있습니다.
사용자가 값을 지정할 것같은 상황에도 지정돼지 않은 다음 세 경우에 엔진은 자동으로 undefined를 반환합니다
- 값을 대입하지 않은 변수, 데이터 영역의 메모리 주소를 지정하지 않은 식별자에 접근할 때
- 정확히는 아무것도 할당하지 않고 끝나지만 변수a 에 접근하고자 할 때 엔진에서 undefined를 반환
- 객체 내부의 존재하지 않는 프로퍼티에 접근하려고 할 때
- return 문이 없거나 호출되지 않는 함수의 실행 결과
undefined는 어떤 변수에 값이 존재하지 않는 경우 의미 그자체가 값입니다.
null 이라는 애초에 비어있음을 명시적으로 나타내고 싶을 때 사용하는 값이 있는데
굳이 명시적으로 undefined를 할당해서 사용할 필요가 없습니다.
따라서 undefined는 '값을 대입하지 않은 변수에 접근하고자 할 때 엔진이 반환해주는 값' 으로만 존재하게 규칙을 따르면 됩니다.
※ typeof null 이 object 라는 결과가 나오는데 이건 자바스크립트 자체 버그입니다.
그리고 null 인지 아닌지 판별하려면 동등연산자 == 대신 일치연산자 === 를 사용해야만 판별 할 수 있습니다.
NaN : number 타입이고 '숫자가 아님'을 의미하는 숫자
주로 isNaN() 함수를 이용해 사용한다
주의할 점은 isNaN(null) 의 결과값이 false 라는 점인데 내부동작을 살펴보면 isNaN(Number(null)) 로 작동되는데
Number(null) 의 값이 0 이 되기 때문에 isNaN(0) = false 를 출력하게 된다
따라서 혼란을 막기위해 더 엄격한 버전인 Number.isNaN() 을 사용하기도 한다.
주어진 값의 유형이 Number 이고 값이 NaN이면 true, 아니면 false 가 나온다
+ Number.isNaN(undefined) 는 isNaN(undefined) 와 다르게 true 를 반환하는데
이는 NaN를 반환하는 연산중에 Number(undefined)가 있기 때문이다. 이외에도 여러가지가 있는데 참고 링크 기록
https://on1ystar.github.io/javascript/2021/03/30/JavaScript-7/
NaN는 유일하게 자기자신과 비교했을 때 같지 않는 특성이 있는데 어디다 응용할지 모르니 일단 기록해둔다
'TIL' 카테고리의 다른 글
[JS] Constructor 메서드와 prototype 메서드의 차이 (0) | 2022.05.17 |
---|---|
[05/03 TIL] JS, CSS특강 (0) | 2022.05.04 |
[04/28 TIL] JS 기초, CSS특강 (0) | 2022.04.29 |
[04/27 TIL] Tailwind CSS , 이력서, CSS특강 과제 (0) | 2022.04.28 |
[04/26 TIL] sass, bootstrap, 영화 정보 페이지 구현 과제 (0) | 2022.04.27 |