`['520', '888', '168', '66.6'].map(parseInt)`执行结果是多少?
在 JavaScript 中,map 函数会遍历数组中的每个元素,并对每个元素执行提供的函数,然后返回一个新数组,其中包含每次函数调用的结果。然而,parseInt 函数的用法在这里有一些特殊之处,特别是当它与 map 函数一起使用时。
parseInt 函数通常有两个参数:要转换的字符串和基数(进制)。在 map 函数中,它会接收三个参数:当前元素、当前元素的索引和整个数组。因此,当你这样使用 map(parseInt) 时,parseInt 会接收到三个参数,而不仅仅是需要转换的字符串。
对于数组 ['520', '888', '168', '66.6'],map(parseInt) 的执行会像这样:
-
对于
'520':parseInt('520', 0, array)。由于基数为 0,JavaScript 会自动根据字符串的格式选择合适的基数(在这种情况下是十进制),所以结果是 520。 -
对于
'888':parseInt('888', 1, array)。这里的基数是 1,但基数 1 在parseInt中是无效的,因此这个函数会返回NaN(非数字)。 -
对于
'168':parseInt('168', 2, array)。这里的基数是 2(二进制),但字符串'168'包含非二进制数字(6 和 8),因此parseInt无法解析它,并返回NaN。 -
对于
'66.6':parseInt('66.6', 3, array)。这里的基数是 3(三进制),但字符串'66.6'包含非三进制数字和一个小数点,因此parseInt同样无法解析它,并返回NaN。
综上所述,['520', '888', '168', '66.6'].map(parseInt) 的执行结果是 [520, NaN, NaN, NaN]。这是一个常见的 JavaScript 陷阱,特别是在面试中可能会被问到。
浙公网安备 33010602011771号