본문으로 바로가기

a === NaN은 항상 false?

category JavaScript 2024. 12. 14. 19:19

문자열 다루기 기본(프로그래머스)

문자열 s의 길이가 4 혹은 6이고, 숫자로만 구성돼있는지 확인해주는 함수,  solution을 완성하세요.  예를 들어 s가 "a234"이면 False를 리턴하고 "1234"라면 True를 리턴하면 됩니다.

 

function solution(s) {
    var answer = false;
    var len = s.length;
    s = s.split('').map(Number);
    if(len === 4 || len === 6){
        answer = true;
        s.forEach((a) => {
            if(isNaN(a)){
                return answer = false;
            }
        });
    }
    return answer;
}

 

이 문제를 풀기 위해 문자는 숫자형으로 바꾸려 할 때 NaN으로 변환되는 것을 이용했습니다.

그런데 a의 값이 NaN일 경우를 위해 a === NaN을 사용하였지만 항상 false가 출력되었습니다.

NaN은 특별한 값으로, 자기 자신과 비교해도 false를 반환하기 때문에 NaN인지 판별하려면 isNaN() 함수를 사용해야 합니다.

console.log(NaN === NaN); // false
console.log(NaN == NaN);  // false
console.log(isNaN(NaN));  // true

 

 

NaN - JavaScript | MDN

전역 NaN 속성은 Not-A-Number(숫자가 아님)를 나타냅니다.

developer.mozilla.org