JavaScript中的parseInt用法

2023-07-11 21:17:22

 

对于这段代码:let result =[1,2,3].map(parseInt),你认为result的结果是什么呢?是[1,2,3]吗。如果是的话,恭喜你终于掉进一个新的坑的!!!!

其实result的结果是[1, NaN, NaN]。先解释一下parseInt的用法,再来看解释上面这段代码的输出原因。

官方解释:

parseInt(string, radix)解析一个字符串并返回指定基数的十进制整数, radix 是2-36之间的整数。不管我们传入的第一个参数是什么类型的,都会自动转换为字符串类型进行处理。

我们可以将这个基数理解为进制,比如radix等于2表示将该字符串转换出来的结果看作是二进制形式,最后将该二进制的结果转换为十进制。就是我们所求的结果。

比如: parseInt("11",2)//3 表示的意思是转换出来的数字11此时是二进制的形式,最后将二进制的11转换为十进制就是我们所求的结果。

比如: parseInt("3",2)// NaN 此时的3不是二进制形式,无法转换,所以结果是NaN.

string参数解析的规则:

string参数以"0x开头",则radix基数会被认为是十六进制string参数是以“0”开头,非严格模式下,radix基数会被认为是八进制string参数是以任意字符开头或者是radix基数是0,radix基数默认是十进制如果string的第一个字符不能转换为数字,直接返回NaN

比如: parseInt("hello233")// NaN

通过上述的讲解我们来分析上面提出的问题:

let result =[1,2,3].map(parseInt)

代码等同于:

let result =[1,2,3].map((item, index)=>{

return parseInt(item, index);

})

当item =1, index =0; parseInt(1,0)结果等于1

当item =2, index =1; parseInt(2,1)结果是NaN,此时的2不是1进制的形式,所以最终结果是NaN.

当item =3, index =2; parseInt(3,2)结果也是NaN,此时的3不是二进制形式,二进制最大的数字是1,所以结果也是NaN.

这些都是基础知识,很多公司笔试中经常会出现这道题目,一开始的话,了解确实非常少,导致自己入了很多坑。多学习,多积累,总有一天会有意想不到的收获。


以上就是关于《JavaScript中的parseInt用法》的全部内容,本文网址:https://www.7ca.cn/baike/51630.shtml,如对您有帮助可以分享给好友,谢谢。
标签:
声明

排行榜