Skip to content

['1', '2', '3'].map(parseInt)` what & why ? #11

@lvwxx

Description

@lvwxx

output

[1, NaN, NaN]

分析

map

  • map 方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的 callback 后返回的结果。
  • map 函数接受 2 个参数,callback 和 thisArg。
  • callback 函数自动接受 3 个参数,分别是数组当前正在处理的元素、数组当前正在处理元素索引和数组本身。
  • callback 没有指定参数时,默认自动传入上述 3 个参数。
  • thisArg 参数指定 callback 执行时 this 的指向。 没有指定时默认指向 window。

parseInt

  • parseInt 函数接受 2 个参数, 要被解析的值和基数,基数不存在时,默认10进制解析。

结论

parseInt 作为 callback 参数传入map函数后,由于 parseInt 可以接受 2 个参数,所以会收到元素值和元素索引 2 个参数。

所以实际执行的 callback 如下:

parseInt(1,0) // 1
parseInt(2,1) // NaN
parseInt(3,2) // NaN

Metadata

Metadata

Assignees

No one assigned

    Labels

    basicJavaScript basic knowledge must konwquestionFurther information is requested

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions