반응형
정의
- NaN은 Not a Number, 즉 숫자가 아닌 모든 것을 의미한다.
특징
1. 모든 NaN은 같지 않다.
- NaN은 비교연산자를 사용하면 모두 같지 않게 나온다.
- 오직 NaN만이 자기 자신과 비교했을 때 같지 않음이 나온다.
NaN === NaN; // false
Number.NaN === NaN; // false
isNaN(NaN); // true
isNaN(Number.NaN); // true
function valueIsNaN(v) { return v !== v; }
valueIsNaN(1); // false
valueIsNaN(NaN); // true
valueIsNaN(Number.NaN); // true
2. 숫자를 표현하는 문자열도 숫자다.
- 그러면 숫자로만 구성된 것만 해당되지 않느냐? 하면 그건 또 아니다.
- 지수(ex. 1e23) 문자열은 숫자로 간주된다.
- 그래서 isNaN('1e23')은 숫자로 간주되어 false를 반환한다.
3.isNaN()과 Number.isNaN()
- isNaN() : 1) 현재 값이 NaN이거나, || 2) 숫자로 변환했을 때 NaN인 경우 참
- Number.isNaN() : 오직 현재 값이 NaN인 경우만 참
isNaN('hello world'); // true
Number.isNaN('hello world'); // false
Number.isNaN(NaN); // true
4. 일부 배열 메서드에서는 NaN을 찾을 수 없다.
- indexOf -> X
- includes -> O
- findIndex -> O
let arr = [2, 4, NaN, 12];
arr.indexOf(NaN); // -1 (false)
arr.includes(NaN); // true
arr.findIndex(n => Number.isNaN(n)); // 2
프로그래머스 - 연습문제: '문자열 다루기 기본' 을 풀면서
반응형
'Front-End: Web > JavaScript' 카테고리의 다른 글
[js] Set (0) | 2022.09.13 |
---|---|
[js] sort() vs sort((a,b) => a - b) (0) | 2022.09.11 |
[js] parseInt vs plus(+) (0) | 2022.09.10 |
[js] Math - ceil, floor, round (+ trunc) (0) | 2022.09.10 |
[js] 문자열.repeat() 안에 정수가 아닌 수를 넣으면? (0) | 2022.09.10 |