说结果(2)
['1', '2', '3'].map(parseInt)
what & why ?
答:[1, NaN, NaN]
Array.prototype.map 的回调实际接收三个参数 (currentValue, index, array),而 parseInt 接收两个参数 (string, radix)。
每次调用实际是:
parseInt('1', 0) // 1 radix 为 0 时按 10 进制解析
parseInt('2', 1) // NaN radix=1 不是合法进制
parseInt('3', 2) // NaN 二进制里没有 '3'
补充
补充:
map(parseInt)是经典坑题。要么传parseInt的包装:['1','2','3'].map((v) => parseInt(v)),要么用Number:['1','2','3'].map(Number),得到[1, 2, 3]。
map 的回调函数签名:
var new_array = arr.map(function callback(currentValue, index, array) {
// 返回新数组的当前元素
}, thisArg);
currentValue:当前被处理的元素;index:当前元素的下标;array:调用map的原数组。
parseInt(string, radix):
string:被解析的值(字符串);radix:解析时使用的基数(2 ~ 36),超出范围会得到NaN。



