No.0020
题干
js
console.log(["1","2","3"].map(parseInt))
题解
js
// [1, NaN, NaN]
这段代码的目的是使用 map()
方法对一个字符串数组应用 parseInt()
函数,然后打印出结果。
首先,我们需要了解 map()
方法和 parseInt()
函数的用法:
map()
方法是一个数组的方法,它可以对数组的每个元素执行一个回调函数,并返回一个新的数组,不改变原数组。parseInt()
函数是一个全局的函数,它可以将一个字符串转换为一个整数,接受两个参数:字符串和进制。
然后,我们需要注意 map()
方法和 parseInt()
函数之间的参数传递:
map()
方法会给回调函数传递三个参数:当前元素、当前索引和原数组。parseInt()
函数会接收两个参数:字符串和进制²。如果只传递一个参数,进制默认为10。
最后,我们需要分析 map()
方法和 parseInt()
函数之间的执行过程:
- 当执行["1","2","3"].map(parseInt)时,相当于执行以下三次调用:
- parseInt("1", 0, ["1","2","3"]) // 返回 1
- parseInt("2", 1, ["1","2","3"]) // 返回 NaN
- parseInt("3", 2, ["1","2","3"]) // 返回 NaN
- 解释如下:
- 第一次调用时,字符串 "1" 和进制 0 被传递给
parseInt()
函数,由于进制 0 会被忽略或视为 10,所以返回 1。 - 第二次调用时,字符串 "2" 和进制 1 被传递给
parseInt()
函数,由于进制 1 不是有效的进制,所以返回 NaN。 - 第三次调用时,字符串 "3" 和进制 2 被传递给
parseInt()
函数,由于字符串 "3" 不是有效的二进制数,所以返回 NaN。
- 第一次调用时,字符串 "1" 和进制 0 被传递给
因此,最终的输出结果是 [1, NaN, NaN]
。