http://www.wirfs-brock.com/allen/posts/166
let test_arr = ['1', '2', '3']
let result_arr = test_arr.map(parseInt)
// 의도한 결과 : [1, 2, 3]
console.log(result_arr)
// 실제 결과 : [1, NaN, NaN]
우리는 문자열에 대해서 정수로 반환된 배열을 얻고 싶었다.
그런데 왜 의도한 것과 다른 결과가 나오는 것일까?
이는 map과 parseInt에 대한 제대로 된 이해를 하지 못했기 때문에 일어난 문제이다.
callback(element, index, thisArray)
Array.map(callback)
먼저 map 메소드와 callback 함수의 구문은 이렇다.
parseInt(string, radix)
그리고 parseInt 메소드의 구문은 이렇다.
즉 우리는 map에 대하여
parseInt('1')
parseInt('2')
parseInt('3')
와 같은 결과를 얻고 싶었지만 실제로 동작되는 것은
parseInt('1', 0) // 1
parseInt('2', 1) // 1진수에 대해서 2?? => NaN
parseInt('3', 2) // 2진수에 대해서 3?? => NaN
위와 같은 결과이다.
그렇기 떄문에 의도와 다른 결과가 생겼던 것이다.
'javascript' 카테고리의 다른 글
XMLHttpRequest (0) | 2020.11.10 |
---|---|
Promise (0) | 2020.11.03 |
정리할 web api 목록 (0) | 2020.09.16 |
;(세미콜론)생략 (0) | 2020.09.10 |
반복 메서드 정리 (0) | 2020.07.30 |