parseInt()函数正解

本文探讨了JavaScript中parseInt()函数的工作原理,解释了它如何将字符串转换为整数,并着重分析了以0开头的字符串解析规则。通过具体例子,阐述了当遇到非数字字符时,parseInt()如何停止解析并返回已解析的整数值。对于以0开头的字符串,parseInt()可能尝试将其解析为八进制或十六进制,但遇到不符合相应进制的数字时,会返回0。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

阿里巴巴的前端面试题目中有一道题是这样的,是关于parseInt()的用法的,题目如下


var b = parseInt("01");
alert("b="+b);
var c = parseInt("09/08/2009");
alert("c="+c);


解答这道题目,我们必须要知道parseInt()是怎么工作的?正确的答案应该是  b=1     c=0

a、parseInt()将一个字符串转换成整数,它将字符串中的字符逐一解析,碰到不能解析的(不是一个数了)就返回。尽可能多的解析(贪婪匹配)。

b、如果 string 以 0 开头,那么 parseInt() 把其后的字符解析为八进制或十六进制的数字。如果 string 以 1 ~ 9 的数字开头,parseInt() 将把它解析为十进制的整数。


举例:比如parseInt("ab123");

解析第一个字符a,看到不是一个数字,直接返回Nan,not a numble   不是一个数


举例:比如parseInt("123");

解析到1是个数字,这个时候没有返回,由于要尽可能多的解析(贪婪匹配),所以再看2,也是个数字,再看3,还是个数字,没了,,所以返回123;


了解了这些知识之后,我们来分析这道题目

1
   var b = parseInt("01");

一看,0,parseInt()默认要返回一个8进制数,再解析1,没了,这是js会解析到01,一看,这不是个8进制数中的1吗,所以返回1。

2
   alert("b="+b);

输出b=1,这里的 + 是连字符

3
4
   var c = parseInt("09/08/2009");
   alert("c="+c);

第3句,看到0之后,parseInt()默认要返回一个8进制数,再看后面是9,显然这不是一个8进制数,所以就返回一个0了。

所以c=0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值