`['520', '888', '168', '66.6'].map(parseInt)`执行结果是多少?

在 JavaScript 中,map 函数会遍历数组中的每个元素,并对每个元素执行提供的函数,然后返回一个新数组,其中包含每次函数调用的结果。然而,parseInt 函数的用法在这里有一些特殊之处,特别是当它与 map 函数一起使用时。

parseInt 函数通常有两个参数:要转换的字符串和基数(进制)。在 map 函数中,它会接收三个参数:当前元素、当前元素的索引和整个数组。因此,当你这样使用 map(parseInt) 时,parseInt 会接收到三个参数,而不仅仅是需要转换的字符串。

对于数组 ['520', '888', '168', '66.6']map(parseInt) 的执行会像这样:

  1. 对于 '520'parseInt('520', 0, array)。由于基数为 0,JavaScript 会自动根据字符串的格式选择合适的基数(在这种情况下是十进制),所以结果是 520。

  2. 对于 '888'parseInt('888', 1, array)。这里的基数是 1,但基数 1 在 parseInt 中是无效的,因此这个函数会返回 NaN(非数字)。

  3. 对于 '168'parseInt('168', 2, array)。这里的基数是 2(二进制),但字符串 '168' 包含非二进制数字(6 和 8),因此 parseInt 无法解析它,并返回 NaN

  4. 对于 '66.6'parseInt('66.6', 3, array)。这里的基数是 3(三进制),但字符串 '66.6' 包含非三进制数字和一个小数点,因此 parseInt 同样无法解析它,并返回 NaN

综上所述,['520', '888', '168', '66.6'].map(parseInt) 的执行结果是 [520, NaN, NaN, NaN]。这是一个常见的 JavaScript 陷阱,特别是在面试中可能会被问到。

posted @ 2024-12-18 11:22  王铁柱6  阅读(13)  评论(0)    收藏  举报