parseInt()是什么

我今天提了个问题:https://segmentfault.com/q/10...

提完之后才发现是自己蠢了,理解不到位。

parseInt(string, radix);把字符串转化为整数

第一个参数必须,是要转换为整数的字符串,如果第一个参数不是字符串,会调用toString()先转化为字符串。如parseInt(070)等价于parseInt(070.toString())等价于parseInt("56").

第二个参数可选,是你告诉这个函数,你的输入其实是几进制的,让它把这个输入转化为十进制的值。如果不写,默认为10.比如parseInt("56", 8),你告诉函数这个"56"是八进制的,让它输出十进制的数值,于是:5*8+6=46。
我理解不到位的地方,就是我以为第二个参数是告诉函数,输出应该是几进制的,我以为parseInt("56", 8)是会输出一个八进制的数,这是不对的。

那么它是怎么运作的呢?

一句话:字符串从左到右挨个遍历,每个字符必须是这个进制内的有效字符(第一位可以是负号"-"),如果不是,就停止,然后转化所有有效的字符。如果开头第一个就不是有效字符,直接返回NaN。

好像很难懂?看例子就容易明白了:

parseInt("1234blue");// 1234
parseInt("1234blue", 16);// 74571
parseInt("b123");// NaN

第一个parseInt,没有指定radix,默认为10,于是十进制的有效字符是:0123456789,所以它遍历到"b"就停止了,输出1234.

第二个parseInt,指定radix为16,十六进制的有效字符是:0123456789abcdef,所以它遍历到"l"才停止,截取的字符串是1234b,转化为十进制是74571.

另外,对于parseInt()来说,小数点不是有效字符:parseInt("22.5")// 22

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值