[javascript] NaN 연산

JavaScript에서 NaN은 “Not a Number”를 나타내는 특별한 값으로, 숫자가 아님을 나타내는 데 사용됩니다. 그러나 NaN 값과 다른 값들 간의 연산은 특별한 동작을 보입니다.

산술 연산

NaN과 숫자 사이의 산술 연산은 항상 NaN을 반환합니다. 예를 들어, 다음과 같은 코드를 실행하면:

let result = NaN + 5;
console.log(result); // NaN이 출력됨

비교 연산

NaN은 연산을 포함해 모든 비교 연산에서 동일하지 않다고 판단됩니다. 이것은 JavaScript의 NaN 동치 비교의 특성으로, 예를 들어:

console.log(NaN === NaN); // false가 출력됨

isNaN() 함수

JavaScript는 isNaN() 함수를 통해 값이 NaN인지 검사할 수 있습니다. 하지만, 이 함수는 대응하는 값이 숫자인지 검사를 하지는 않습니다. 따라서 isNaN() 함수는 실제로 전달된 값이 NaN인지 여부를 정확히 검사할 수 있는 함수는 아닙니다.

console.log(isNaN(NaN)); // true가 출력됨

정확한 검사를 위한 방법

실제로 값이 NaN인지 여부를 정확히 검사하려면, Number.isNaN() 함수를 사용하는 것이 좋습니다.

console.log(Number.isNaN(NaN)); // true가 출력됨

결론

JavaScript에서 NaN은 특별한 동작을 보이며, 주의해서 다루어져야 합니다. 산술 연산에서는 항상 NaN을 반환하고, 동등성 비교에서도 특별한 동작을 합니다. 값이 NaN인지 정확하게 확인하려면 Number.isNaN() 함수를 사용해야 합니다.

참고 자료: