js中parseInt函数浅谈


Posted in Javascript onJuly 31, 2013

从很热门的实例parseInt("09")==0说起。
parseInt(number,type)这个函数后面如果不跟第2个参数来表示进制的话,默认是10进制。
比如说parseInt("010",10)就是10进制的结果:10,
parseInt("010",2)就是2进制的结果:2,
parseInt("010",8)就是8进制的结果:8,
parseInt("010",16)就是2进制的结果:16。

下面我来说说没有指定进制单位的时候,默认是10进制,但:如果是里面的Number是0开头的就认为是8进制的,如果是0x开头的就认为是16进制的。
parseInt("10")==>parseInt("010",10)===>10parseInt("010")==>parseInt("010",8)==>8parseInt("0x10")==>parseInt("010",16)==>16.

到这里很顺利.
许多事情不是想的那么顺利,比如说如果Number不是我们给的正常数字又怎么解释呢。查了些资料,是这样说的:
parseInt(Number)如果中间的Number遇到不是数字(0-9)的就中断往下解析,就只取不是数字之前的值去运算:比如parseInt("100x"),就相当于parseInt("100")===》parseInt("100",10)==>100,又如parseInt("0100x")===>parseInt("0100")===>parseInt("100",8)===>64.
到这里我们似乎无视了一个就是16进制中的有个x,它也不是数字,是不是遇到x也无视了呢。尝试下了发现在这个特殊处理了下,
比如parseInt("0x10")===>parseInt("10",16)===>16和最上面的结果相符,但却和我刚说的,不是字符就自动不解析就应该理解成parseInt("0")相违背。

这里就需要注意下,parseInt里面的Number是这样的,当如果第一个不是0且不是字符就认为是10进制,一切照旧执行,遇到字母就停下来。又当如果是第一个是0,后面那个就需要注意了,如果是x就继续往下走,这里的x不代表数值,只能和前面的0一起组成0x代表16进制的单位,后面的才按上面我们讲的遇到非数字停止解析的规则来。比如parseInt("0xt")==>parseInt("0x")==>parseInt("",16)就是NaN了。

总结下,parseInt(Number)里面的值:如果是第一位不是0就遇到字母就停止解析,并把字母前面的值作为10进制去解析,如果第一个就是字母那么值就是空,空成了NaN,
比如:parseInt("a")==>parseInt("",10)==>NaN.parseInt("10a")==>parseInt("10")==>parseInt("10",10)==>10;
如果第一位是0,且第2位不是x也和上面一样遇到字母就停止解析,并把字母前面的值作为8进制去解析,比如:parseInt("0a")==>parseInt("0")==>parseInt("0",10)==>0.PS:这个有点特殊,因为0a被解析成了0,还不具备看做是8进制的结构,下面那个就明显了。
parseInt("010a")==>parseInt("010")==>parseInt("10",8)==>8;如果第一位是0,且第2位是x那后面也和上面一样遇到字母就停止解析,并把字母前面的值作为16进制去解析,比如:parseInt("0xt")==>parseInt("",16)==>NaN.parseInt("0x12t")==>parseInt("12",16)==>18.

Javascript 相关文章推荐
JavaScript 私有成员分析
Jan 13 Javascript
一个基于jquery的图片切换效果
Jul 06 Javascript
js获取class的所有元素
Mar 28 Javascript
jquery配合css简单实现返回顶部效果
Sep 30 Javascript
JS 打印界面的CSS居中代码适用所有浏览器
Mar 19 Javascript
jQuery实现图片文字淡入淡出效果
Dec 21 Javascript
基于JS实现密码框(password)中显示文字提示功能代码
May 27 Javascript
jQuery实现智能判断固定导航条或侧边栏的方法
Sep 04 Javascript
基于JavaScript实现滑动门效果
Mar 16 Javascript
用React实现一个完整的TodoList的示例代码
Oct 30 Javascript
Vue中的异步组件函数实现代码
Jul 20 Javascript
ES6 系列之 WeakMap的使用示例
Aug 06 Javascript
JavaScript中的关键字"VAR"使用详解 分享
Jul 31 #Javascript
JavaScript 和 Java 的区别浅析
Jul 31 #Javascript
javascript检查表单数据是否改变的方法
Jul 30 #Javascript
JS 对输入框进行限制(常用的都有)
Jul 30 #Javascript
JS无限极树形菜单,json格式、数组格式通用示例
Jul 30 #Javascript
js中widow.open()方法使用详解
Jul 30 #Javascript
Extjs NumberField后面加单位实现思路
Jul 30 #Javascript
You might like
php使用反射插入对象示例分享
2014/03/11 PHP
php file_get_contents取文件中数组元素的方法
2017/04/01 PHP
PHP实现微信公众号验证Token的示例代码
2019/12/16 PHP
jquery 分页控件实现代码
2009/11/30 Javascript
父元素与子iframe相互获取变量和元素对象的具体实现
2013/10/15 Javascript
jQuery中prop()方法用法实例
2015/01/05 Javascript
JavaScript控制图片加载完成后调用回调函数的方法
2015/03/20 Javascript
jQuery实现form表单基于ajax无刷新提交方法详解
2015/12/08 Javascript
Node.js如何自动审核团队的代码
2016/07/20 Javascript
bootstrap滚动监控器使用方法解析
2017/01/13 Javascript
详解原生js实现offset方法
2017/06/15 Javascript
Angular实现响应式表单
2017/08/04 Javascript
json对象及数组键值的深度大小写转换问题详解
2018/03/30 Javascript
jQuery实现列表的增加和删除功能
2018/06/14 jQuery
详解angular部署到iis出现404解决方案
2018/08/14 Javascript
[00:32]2018DOTA2亚洲邀请赛iG出场
2018/04/03 DOTA
Python中正则表达式的用法实例汇总
2014/08/18 Python
介绍Python中几个常用的类方法
2015/04/08 Python
python实现在控制台输入密码不显示的方法
2015/07/02 Python
python 捕获shell脚本的输出结果实例
2017/01/04 Python
python判断输入日期为第几天的实例
2018/11/13 Python
Python 经典算法100及解析(小结)
2019/09/13 Python
Django通用类视图实现忘记密码重置密码功能示例
2019/12/17 Python
深入理解css中vertical-align属性
2017/04/18 HTML / CSS
Grow Gorgeous美国官网:只要八天,体验唤醒毛囊后新生的茂密秀发
2018/06/04 全球购物
什么是ARP(Address Resolution Protocol)地址解析协议
2013/10/31 面试题
应届生求职信写作技巧
2013/10/24 职场文书
青年创业培训欢迎词
2014/01/08 职场文书
服装促销活动方案
2014/02/23 职场文书
参观接待方案
2014/03/17 职场文书
开学寄语大全
2014/04/08 职场文书
竞选宣传委员演讲稿
2014/05/24 职场文书
文明好少年事迹材料
2014/08/19 职场文书
毕业证委托书范文
2014/09/26 职场文书
停车场管理协议书范本
2014/10/08 职场文书
小学感恩主题班会
2015/08/12 职场文书