["1", "2", "3"].map(parseInt) 答案是多少?

原创 sunshineT 随笔 javascript 472阅读 2017-08-28 11:31:47 举报

先看一下执行结果:
html 代码

刚刚弄懂。解析一下:

1。现在先看一下map的用法:array.map(function(currentValue,index,arr), thisValue)

["1","2","3"].map(parseInt)答案是多少?,
也就是说map里面的函数接收三个参数:1.当前值 2.索引值 3.数组对象。

2.接下来看一下parseInt的用法: parseInt() 函数可解析一个字符串,并返回一个整数。parseInt(string, radix)

["1","2","3"].map(parseInt)答案是多少?
也就说parseInt接受俩个参数,第一个是当前的值,第二个是用来说明哪种进制进行解析,只能是0,或者 2<= value <=36 ,否者返回NaN。

3.接下来返回正题。为什么后面会返回两个NaN,现在重写一下parseInt函数,看看传入的值是什么
html 代码

第一个参数是当前值,第二个参数是索引值。

看一下map到底传入的是那几个值
html 代码

第一个参数是当前值,第二个参数是索引值。第三个是当前数组。没有其他值了。

事实说明未修改过的parseInt接受的是俩个参数,第一个是当前值,第二个是索引值。1-0,2-1,3-2
1-0 :0可以当作10进制处理,所以得1
2-1 :1错了,必须 2<= value <=36, 所以返回NaN
3-2: 2进制是对的,但是2进制里没有3这个数字。 所以返回NaN

评论 ( 2 )
最新评论
sunshineT 1F 2017-08-28 15:40:57 2F

我是这样理解的,map里面的函数默认传的是三个参数 1.当前值 2.索引值 3.数组对象,而parseInt接受的是俩个参数,所以就是前俩个,这就像我们写函数,function fn(value1,value2){ return value1+value2},如果这样调用fn(1,2,3),结果就是前俩个。

爱学习的猪小蛋 2017-08-28 15:04:59 1F

为啥map会传给parseInt两个参数呢,连带着索引也传了进去,这里没想通,可能要看看源码- -
如果写成arr.map(v => parseInt(v)); 结果就会是正常的