-
NaN은 특별한 값을 가지고 있어서, NaN과 NaN은 동등 비교(===)를 하면 항상 false를 반환.
-
이는 NaN이 "숫자가 아님"을 나타내는 특수한 값이지만, 실제로는 값이 정의되어 있지 않은 상태이기 때문!!!!
-
다른 어떤 값과도 (자기 자신 포함) 같지 않기 때문임.
-
이 동작은 부동 소수점 산술을 위한 IEEE 754 표준의 결과입니다. 이 표준은
NaN
을 정의하며, 이는 정의되지 않거나 나타낼 수 없는 수학적 작업의 결과를 나타내는 특수한 값 -
NaN
은 "숫자가 아님"을 의미하지만, 실제로는 JavaScript에서 특정 값으로 반환될 수 있는 특정 값이다. 예를 들어 0을 0으로 나누거나 잘못된 숫자를 구문 분석하려고 시도하는 경우NaN
이 반환될 수 있음. -
NaN
은 특정한 숫자 값이 아니기 때문에,===
연산자를 사용하여 자기 자신을 비롯한 어떤 값과도 비교할 수 없음 -
값이
NaN
인지 여부를 테스트하려면 JavaScript의 내장 함수인isNaN()
함수를 사용할 수 있다. -
이 함수는 값이
NaN
인 경우true
를 반환하고, 그렇지 않으면false
를 반환합니다.
- 사용자 입력 값의 유효성 검사
- 사용자로부터 입력받은 값이 숫자인지 아닌지를 확인하여 유효성을 검사함
- 계산 결과의 유효성 검사
- 계산 결과가 숫자인지 아닌지를 확인하여 유효성을 검사하는 데 사용됨
- 데이터 처리
- 데이터를 처리하는 도중에 유효하지 않은 값을 처리하는 데 사용
- 문자열을 숫자로 변환할 때 생기는 오류 처리
-
parseInt(), praseFloat() 함수를 이용해서 문자열을 순자로 변환할 수 있지만 변환 결과가 NaN일 경우
let num = parseInt("Hello World"); if(isNaN(num) { console.log("문자열을 숫자로 반환할 수 없습니다."); }
-
- 수학적 계산에서 NaN 값이 생성될 수 있는 경우
-
0으로 나누거나, Infinity를 0으로 나누는 수학적 계산을 수행하는 경우.
let result = 10 / 0; if (isNaN(result)) { console.log("0으로 나누어 계산할 수 없습니다."); }
-
- 문자열을 숫자로 변환할 때 생기는 오류 처리
- 데이터를 처리하는 도중에 유효하지 않은 값을 처리하는 데 사용
===Number
나 ===float
, ===int
와 같은 비교 연산자는
특정 타입의 값을 확인하기 위해 사용 됨.
하지만 isNaN()
함수는 값이 NaN
인지 여부를 확인하기 위해 사용
또한, JavaScript에서는 몇 가지 유형의 값들이 서로 상호작용할 때, 예기치 않은 결과를 일으킬 수 있음
예를 들어, NaN === NaN
비교 연산의 결과는 false
숫자가 아닌 값들에 대해서도 예상되는 결과를 얻기 위해서 isNaN()
함수를 쓴다!
isNaN()
함수는 숫자인지 여부를 확인하기 위해 사용되며, 다양한 유형의 값들에 대해서도 정확한 결과를 얻을 수 있다. 그러므로, 값이 NaN
인지 여부를 확인하기 위해서는 isNaN()
함수를 사용해야한다.
- 부동 소수점 방식에서는 "NaN(Not a Number)"이라는 값이 존재함. NaN은 숫자가 아님을 나타내는 값으로, 예를 들어 0으로 나누거나 0을 곱하면 NaN이 된다.
- 하지만 모든 비숫자 값이 NaN은 아닙니다.
예를 들어
Infinity(양의 무한대)
와-Infinity(음의 무한대)
는 숫자이며, 또한null
,undefined
등의 값도 NaN은 아님!!!!!! - 따라서 부동 소수점 방식에서는 NaN 외에도 Infinity, -Infinity 등의 특수한 값을 가질 수 있다.