有关提供map的parseInt的问题

为什么当我在第一个参数中显式使用parseInt时,一切都按预期工作,但是我直接提供要映射的parseInt函数,就好像在图片中看到的那样。

我已经阅读了parseInt的第二个基数参数,并且我认为它与此有关。但是,当我自己没有明确地做为第二个参数时,我仍然不了解JS内部为parseInt函数提供了什么。有人知道吗?

有关提供map的parseInt的问题

qushiyi0120 回答:有关提供map的parseInt的问题

由于.map调用带有两个参数的函数,第二个是元素的索引,因此在第二种情况下,您的parseInt调用会得到奇数基数。

示例:

> function f(x,y) {
... console.log(x,y);
... }
undefined
> [1,2,3,4].map(x => x.toString()).map(f)
1 0
2 1
3 2
4 3

致电.map(parseInt)时,parseInt会同时获得两者。当您调用.map(x => parseInt(x))时,第二个将被忽略,并且parseInt仅使用一个参数和默认基数被调用。

(实际上,还有第三个参数;请阅读Array.map文档。)

,

这是因为所有数组方法都将3个参数传递给您的回调,第一个参数是每个索引处的数组元素,第二个参数是索引,最后一个参数是数组本身。当像在第二个示例中一样直接传递对回调的引用时,Javascript将所有3个参数隐式传递给回调,因此在parseInt中传递的索引用作基数,在parseInt时使用被赋予无效的基数,它仅返回NaN。在第一个示例中,您自己仅显式地传递了数组元素,并且省略了parseInt的基数参数,因此假定以10为底数

本文链接:https://www.f2er.com/2839365.html

大家都在问