最近碰到一道题,可能很多小伙伴们都遇到过,不卖关子直接上题目
["1", "2", "3"].map(parseInt)
咋一看我还以为是[1,2,3]呢(原谅我的无知),然后把结果打印出来(一脸懵逼),人家的执行结果明明是[1, NaN, NaN]。为什么呢?本人也是看了好些文档才总算把它弄明白,请跟着我一起来一探究竟吧。
1) parseInt() 函数能解析一个字符串,并返回一个整数,需要两个参数 (val, radix), 是的、你没有听错就是接受两个参数,只不过我们平时把第二个参数给省略了。val: 就不用解释了,就是你想传入的那个值,radix: 基数(进制数会更好理解一些)它的范围为2-36 即:二进制到三十六进制。
当parseInt(val)只传一个参数时,相当于parseInt(val,0),会把val当成一个十进制数来解析,并对其进行取整。
2) 告诉我这么多有什么用,跟本题有关系吗? 那是当然的了,请看一下代码:
parseInt(1010, 2)
parseInt(10, 8)
parseInt('b', 16)
相信你已经大概明白了parseInt(val, radix)中的两个参数。那接下来我们在来看看我们的题目:
["1", "2", "3"].map(parseInt)
["1", "2", "3"].map(function parseInt (ele, index) { })
parseInt(1, 0)
parseInt(2, 1)
parseInt(3, 2)
现在你肯定迫不及待的想要来一段代码来测试一下
["1", "0", "0"].map(parseInt)
['1','2','3','4','5','6','7','8','9','10']map(parseInt)
好了,今天就到这里吧,我得滚回去敲代码了。