2월 16일 공부일기 # 검증

다음과같이 계산하였다. 내가 원하는것은,
// 1) sum이라는 변수하나를 선언,
// 2) let strcount = 0;
// 3) 함수에 주어진 str에 for문을 사용하고
// str[i] 숫자타입일 경우엔 sum에다가 그 숫자를 더함.
// 문자 타입일 경우엔, strCount 변수에 1을 추가해줌.
// 4) 공백일 경우엔 무시.. 문자열
// 5) sum / strCount를 리턴.

이런 수도코드를 바탕으로, 문자열 길이만큼 숫자를 나눠 반올림하는것이다.
하지만.. 나는 한가지 오만에 빠졌따..... 그렇다..

그것은 typeof str[i]가 ===='number'라는 착각이다. 나는 당연히 str[0] 이 "8" 이여도
number로 반환해줄거라 믿어 의심치않은나머지.... 당연히 나올것같은 로직에 이렇게 생각한것이다.

정말 엄청나게 크나큰 착각이었던 것이다.

아래를 보면 다음과 같다... 정말 엄청나게 큰 착각이다..
string으로 버젓이 반환되었고,
typeof NaN을 치면 "number"로 반환되었다.

그렇다 "Number" 메소드는 정말 무식하게 뭐가들어갔든간에 그냥 어거지로 숫자형태로 만든다.
그리고 그것을 NaN이란 이름으로반환한다..

정말 하나 알고 넘어간다.. 내가 반드시 틀리지않을거라는 착각.. 로직은 분명히 맞는것은 사실이다
방향은 맞다. 방향이 맞다고 느껴질때 틀린것을 발견한다면, 그것은 분명 내가 뭔가 계산도중 잘못 알고 있다는 것이다...

그렇다면 'NaN' 과 일반 자연수는 어떻게 구분가능 할 것인가!?

사실 이것을 검증하기위해 스택오버플로우에 질문을 하였었는데..
엄청나고 압도적인 비추천수와 핀잔을 듣고 결국 글은 삭제하였다..

하지만.. 그래도 하나 건진것이 있었으니.. 바로,

isNaN()

이것이다. 자연수가 아닐 경우에만 false를 출력, 나머지는 true로 출력해준다. 위 고민을 해결해줬던 정말 고마운 메소드가 아닐수가 없었다..

좋은 웹페이지 즐겨찾기