>웹 프론트엔드 >JS 튜토리얼 >`parseInt()`가 포함된 `Array.map()`이 JavaScript에서 예기치 않은 결과를 생성하는 이유는 무엇입니까?

`parseInt()`가 포함된 `Array.map()`이 JavaScript에서 예기치 않은 결과를 생성하는 이유는 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-17 11:10:27209검색

Why Does `Array.map()` with `parseInt()` Produce Unexpected Results in JavaScript?

parseInt를 사용하여 Array.map()의 숫자를 구문 분석

Javascript에서 Array.map() 함수는 각 숫자에 콜백 함수를 적용합니다. 배열의 요소입니다. 그러나 이 컨텍스트에서 parseInt() 함수를 사용하면 예상치 못한 결과가 나올 수 있습니다.

제공된 예에서:

['1','2','3'].map(parseInt);

parseInt()는 [1, NaN, NaN]을 생성합니다. 예상했던 [1, 2, 3] 대신. 이 동작은parseInt()가 구문 분석할 문자열과 선택적 기수(기본)라는 두 개의 인수를 사용하기 때문에 발생합니다.

Array.map() 콜백 함수는 요소 값, 인덱스 및 요소의 세 가지 매개 변수를 제공합니다. 배열 자체. 기수를 지정하지 않고 parsInt()를 사용하는 경우 두 번째 매개변수(인덱스)를 기수로 사용합니다.

['1','2','3']의 경우,parseInt에서 사용하는 기수 값 ()는 0, 1, 2가 됩니다. 기수 1은 유효하지 않고 3은 이진수(기수 2)로 표현할 수 없으므로 구문 분석이 실패하여 결과는 다음과 같습니다. NaN.

이 동작을 수정하려면 래퍼 함수 내에서 parseInt()에 명시적인 기수를 제공하세요.

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

또는 ES2015 구문을 사용하세요.

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

10의 기수를 지정함으로써 우리는 parsInt()가 문자열을 올바르게 구문 분석하도록 보장합니다. 정수.

위 내용은 `parseInt()`가 포함된 `Array.map()`이 JavaScript에서 예기치 않은 결과를 생성하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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