我不了解此map()行为

时间:2019-10-08 12:19:11

标签: javascript

您好,JavaScript大师!

console.log([ '5', '9', '7' ].map(parseInt))告诉我[5,NaN,NaN]

console.log([ '5', '9', '7' ].map(function(element){
    return parseInt(element)
}))

告诉我[5,9,7]

但是为什么呢? ^^'

3 个答案:

答案 0 :(得分:2)

发生这种情况是因为,如here所述:

  

parseInt通常与一个参数一起使用,但需要两个。首先是   一个表达式,第二个是回调函数的基数,   Array.prototype.map传递3个参数:

     
      
  • 元素
  •   
  • 索引
  •   
  • 数组
  •   
     

parseInt会忽略第三个参数,但是第二个参数则不会,   因此可能会造成混乱。

答案 1 :(得分:0)

map会使用3个参数调用您为其提供的函数:值,值在数组中的索引以及数组本身。您的第二种方法安全地忽略了这些,但是您的第一种方法导致将第二个参数解释为数字的基数,而这并不是您想要的。

答案 2 :(得分:0)

此处有最佳解释:enter image description here

不使用复制粘贴整个答案