网上解释说,上面那段代码相当于[parseInt(1,0),parseInt(2,1),parseInt(3,2)],我不是很理解为什么是这样的
网上解释说,上面那段代码相当于[parseInt(1,0),parseInt(2,1),parseInt(3,2)],我不是很理解为什么是这样的
相当于这样
[1, 2, 3].map((num, index) => parseInt(num, index))
而parseInt接收的第二个参数会作为将要转换的进制,只接受2到36之间的整数
0估计是布尔为false了,使用默认进制,也就是10进制
1是不被允许的进制,应该是相当于错误去处理了,无论怎么样都会返回NaN
二进制中是没有3的,为NaN
大概是这样,没有详细验证,见谅
Array.map会接收一个callback
arr.map(function callback(currentValue, index, array) {
// Return element for new_array
}[, thisArg])
这里parseInt就作为map的callback出现, 所以实际执行的就是[parseInt(1,0),parseInt(2,1),parseInt(3,2)]
而parseInt本身就有两个参数parseInt(string, radix)
第一个是需要parse的字符串,第二个是进制, 所以最后的结果是1,NaN, NaN
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
map函数会给callback传递三个参数,被遍历的元素、元素的索引和被遍历的数组本身。
parseInt会接收两个参数,第一个参数代表需要parse的这个数字,第二参数代表进制,所以会出现你说的那种情况。