["1","2","3"].map(parseInt) //[1,NaN,NaN]
题目很简单,就是这个,求各位大佬指点。里面直接传入一个parseInt,这个parseInt转换了谁,后面两个NaN是怎么得出来的?
首先看map干了什么
["1","2","3"].map(function (){ console.log(arguments) })
["1", 0, Array[3]]
["2", 1, Array[3]]
["3", 2, Array[3]]
然后看 parseInt
parseInt(string, radix);
parseInt() 函数将给定的字符串以指定基数(radix/base)解析成为整数。就是 你想把string当成radix进制数解析成10进制
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/parseInt
radix传入0时会把1当成是10进制数,所以“1”成功了。
radix传入1时...没有1进制数,所以不可能转换成功,返回NaN
radix传入2时,"3"不能当作2进制数处理所以也返回NaN
卧槽,我根本没考虑这么细,大神请收下我的膝盖,看来我还是基础不行
个人感觉就是map会针对parseInt依次传入每个元素,形成一个新的array,只是不是应该是[1,2,3]么?为什么后面成了NaN,不明白
我也以为是[1,2,3],但是确实输出的是NaN,后面的俩NaN不知道怎么来的