>웹 프론트엔드 >JS 튜토리얼 >`Array#map`과 함께 사용할 때 `parseInt`가 `NaN`을 반환하는 이유는 무엇입니까?

`Array#map`과 함께 사용할 때 `parseInt`가 `NaN`을 반환하는 이유는 무엇입니까?

DDD
DDD원래의
2024-12-14 15:02:12666검색

Why Does `parseInt` Return `NaN` When Used with `Array#map`?

parseInt가 Array#map을 사용하여 NaN을 반환하는 이유는 무엇입니까?

Mozilla 개발자 네트워크에서는 [1,4,9].map( Math.sqrt)는 [1,2,3]을 반환합니다. 그러나 map을 사용하여 배열 리터럴 ['1','2','3']에 parsInt를 적용하면 [1, NaN, NaN]이 생성됩니다. 이 동작은 Firefox 3.0.1 및 Chrome 0.3에서 발생합니다.

근본 원인

세 가지 매개변수(요소 값, 해당 인덱스와 순회된 배열 객체입니다. map 내에서 parseInt가 호출되면 인덱스는 두 번째 인수가 되며, 이는 기수(변환되는 숫자 체계의 기준)로 해석됩니다.

앞서 언급한 경우, parInt는 기수 값 0으로 호출됩니다. , 1 및 2입니다. 앞에 0이 없는 정수의 경우 기본적으로 기수는 10입니다. 그러나 기수 1은 유효하지 않으며 기수 2는 숫자 3을 지원하지 않습니다. 따라서 parseInt는 두 번째 및 세 번째 요소에 대해 NaN을 반환합니다.

해결책

To 이를 수정하려면 래퍼 기능을 활용할 수 있습니다.

['1','2','3'].map(function(num) { return parseInt(num, 10); });

또는 ES2015 :

['1','2','3'].map(num => parseInt(num, 10));

기수를 10으로 명시적으로 제공함으로써 parseInt가 문자열을 밑이 10인 정수로 올바르게 해석하도록 보장합니다.

위 내용은 `Array#map`과 함께 사용할 때 `parseInt`가 `NaN`을 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.