논리적 사고

NaN이 배열에 있는데 indexOf는 왜 못 찾을까?

인덱스 오브와 인클루즈의 비교 규칙을 실제 배열에 적용해, ‘못 찾았다’는 결과가 무엇을 보장하는지 확인합니다.

배열 4·NaN·12에서 NaN 검색 결과가 indexOf는 −1, includes는 참으로 달라지는 비교 규칙
배열 4·NaN·12에서 NaN 검색 결과가 indexOf는 −1, includes는 참으로 달라지는 비교 규칙
그림 크게 열기 ↗SVG 저장

그림에서 무엇을 볼까요?

배열 4·NaN·12에서 NaN 검색 결과가 indexOf는 −1, includes는 참으로 달라지는 비교 규칙

가상 계산 결과 [4, NaN, 12]에 유효한 수가 아닌 값이 하나 들어 있습니다. NaN은 낸(Not a Number, 수가 아님)이라고 읽는 자바스크립트의 특수한 숫자 값입니다. AI가 배열의 indexOf(NaN)이 −1이므로 NaN이 없다고 설명했다면, 배열과 메서드의 비교 규칙을 함께 살펴야 합니다.

인덱스 오브(indexOf, 일치하는 첫 위치 찾기)는 엄격한 같음 비교를 사용합니다. NaN은 이 비교에서 자기 자신과도 같지 않으므로 NaN === NaN은 거짓입니다. 따라서 배열에 NaN이 들어 있어도 indexOf(NaN)은 찾지 못했다는 −1을 반환합니다.

함께 확인할 점

NaN이 있는 기본 배열에서 indexOf와 includes, NaN 항목 수를 비교합니다. 찾을 값을 숫자 12와 문자열 "12"로 바꾸어 자료형의 영향을 확인합니다. NaN 없는 배열로 바꾸고 다시 NaN을 찾은 뒤 초기화합니다.

생각해 볼 질문

‘−1이 나왔으니 값이 없다’는 설명을 검색 메서드와 비교 규칙이 드러나도록 고쳐 쓰세요.

← 논리적 사고 그림 더 보기