今儿碰到个题目
关于['1','2','3'].map(parsetInt)
最开始以为很简单,就是将数组中的所有元素进行向Int的转化,然而机智的我转念一想事情不会那么简单。
然后偷偷摸摸的输入了下,抬头看看周围没有人点了下回车
酱
后来了解到,原因是map函数的参数所致
我们的['1','2','3'].map(parseInt)
按照array.map函数的可选、必选参数对该函数按照情形,按照顺序是这样解析的
①parseInt(‘1’,0,[1,2,3])
此处1为currentValue,0为其在数组中的索引,[1,2,3]为当前数组对象
然而parseInt的函数
即说明parseInt只接收两个参数,那么最后表达应该为如下
parseInt(‘1’,0,[1,2,3]) => parseInt(‘1’,0)
已知此处‘1’为要被解析的字符串,radix为0,即以十进制进行转换结果为
parseInt(‘1’,0) => 1
②同理
parseInt(‘2’,1,[1,2,3]) => parseInt(‘2’,1) => NaN
此处‘2’为要被解析的字符串,radix为1,即将2以1进制进行转换结果为无法转化结果为NaN
③parseInt(‘3’, 2,[1,2,3]) => parseInt(‘3’,2) => NaN
此处‘3’为要被解析的字符串,radix为2,即将3以2进制进行转换,而3不是一个二进制数(二进制由0、1组成),无法转换结果为NaN
结果即 1,NaN,NaN