- 다른 어떤 값과도 (자기 자신 포함) 같지 않기 때문임.
이는 정의되지 않거나 나타낼 수 없는 수학적 작업의 결과를 나타내는 특수한 값
NaN
은 "숫자가 아님"을 의미하지만, 실제로는 JavaScript에서 특정 값으로 반환될 수 있는 특정 값이다.
예를 들어 0을 0으로 나누거나 잘못된 숫자를 구문 분석하려고 시도하는 경우 NaN
이 반환될 수 있음.
NaN
은 특정한 숫자 값이 아니기 때문에, ===
연산자를 사용하여 자기 자신을 비롯한 어떤 값과도 비교할 수 없음
값이
NaN
인지 여부를 테스트하려면 JavaScript의 내장 함수인isNaN()
함수를 사용
- NaN ❌ => false 반환
- NaN 🅾️ => true 반환
===Number
나 ===float
, ===int
와 같은 비교 연산자는
특정 타입의 값을 확인하기 위해 사용.
하지만 isNaN()
함수는 값이 NaN
인지 여부를 확인하기 위해 사용
숫자가 아닌 값들에 대해서도 예상되는 결과를 얻기 위해서 isNaN()
함수를 쓴다!
isNaN()
함수는 숫자인지에 대한 여부를 확인하기 위해서 사용 됨.
값이 NaN
인지 여부를 확인하기 위해서는 isNaN()
함수를 사용해야한다.
사용자 입력 값의 유효성 검사
계산 결과의 유효성 검사
데이터 처리
데이터를 처리하는 도중에 유효하지 않은 값을 처리할 때
1. 문자열을 숫자로 변환할 때 생기는 오류 처리
parseInt(), praseFloat() 함수를 이용해서 문자열을 순자로 변환할 수 있지만 변환 결과가 NaN일 경우
let num = parseInt("Hello World");
if(isNaN(num)) {
console.log("문자열을 숫자로 반환할 수 없습니다.");
}
ㅤ
2. 수학적 계산에서 NaN 값이 생성될 수 있는 경우
0으로 나누거나, Infinity를 0으로 나누는 수학적 계산을 수행하는 경우.
let result = 10/0;
if(isNaN(result)) {
console.log("0으로 나누어 계산할 수 없습니다.");
}
NaN
은 숫자가 아님을 나타내는 값Infinity(양의 무한대)
와 -Infinity(음의 무한대)
는 숫자 🅾️🅾️🅾️ => NaN ❌❌❌null
, undefined
등의 값도 NaN가 아님.Infinity, -Infinity 같은 숫자는 NaN로
모든 비숫자 값이 NaN인 것은 아니다 !!
흥미로운 글 잘 읽었습니다 ㅎㅎ NaN은 특정한 숫자 값이 아니기 때문에, 어떤 값과도 비교할 수 없으므로, 값이 NaN인지 테스트하려면
isNaN()
함수를 사용하자! null, undefined 등의 값이 NaN가 아니라는 것도 신기하네요! 놓치기 쉬운 부분인 것 같은데 알아갑니다 :)마지막에 "🤔 0으로 나누거나 0을 곱하면 NaN" 라는 것이 궁금해서 직접 콘솔에 찍어 보니 0을 곱했을 때는 0이 나와서 isNaN === false가 나오더라구요! 혹시 0을 곱했을 때 NaN이 나오는 예제를 아실까요??
그리고 0으로 나누는 것도 "0을" 0으로 나눌때만 NaN인게 맞나요 ?! 그럼 마지막 부분에서 앞에 "0을" 이라는 말을 붙여주면 덜 헷갈릴 것 같아요 ㅎㅎ!