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 相关文章推荐
彻底搞懂JS无缝滚动代码
Jan 03 Javascript
jquery+ashx无刷新GridView数据显示插件(实现分页、排序、过滤功能)
Apr 25 Javascript
JQuery 获取json数据$.getJSON方法的实例代码
Aug 02 Javascript
tangram框架响应式加载图片方法
Nov 21 Javascript
js闭包实例汇总
Nov 09 Javascript
js简单抽奖代码
Jan 16 Javascript
JS实现转动随机数抽奖特效代码
Apr 16 Javascript
JavaScript实现定时隐藏与显示图片的方法
Aug 06 Javascript
基于JavaScript实现高德地图和百度地图提取行政区边界经纬度坐标
Jan 22 Javascript
JavaScript之Blob对象类型的具体使用方法
Nov 29 Javascript
vue中watch和computed的区别与使用方法
Aug 23 Javascript
vue如何使用模拟的json数据查看效果
Mar 31 Vue.js
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
PHPShop存在多个安全漏洞
2006/10/09 PHP
中英文字符串翻转函数
2008/12/09 PHP
php array_unique之后json_encode需要注意
2011/01/02 PHP
smarty 缓存控制前的页面静态化原理
2013/03/15 PHP
php实现生成code128条形码的方法详解
2017/07/19 PHP
php生成随机数/生成随机字符串的方法小结【5种方法】
2020/05/27 PHP
静态的动态续篇之来点XML
2006/08/15 Javascript
又一个图片自动缩小的JS代码
2007/03/10 Javascript
通过Jquery遍历Json的两种数据结构的实现代码
2011/01/19 Javascript
jquery 页面滚动到指定DIV实现代码
2013/09/25 Javascript
Jquery实现侧边栏跟随滚动条固定(兼容IE6)
2014/04/02 Javascript
jQuery获取对象简单实现方法小结
2014/10/30 Javascript
做web开发 先学JavaScript
2014/12/12 Javascript
基于jquery实现智能表单验证操作
2016/05/09 Javascript
JavaScript自动点击链接 防止绕过浏览器访问的方法
2017/01/19 Javascript
JS简单判断滚动条的滚动方向实现方法
2017/04/28 Javascript
JavaScript Canvas编写炫彩的网页时钟
2019/10/16 Javascript
JavaScript实现电灯开关小案例
2020/03/30 Javascript
JS实现简易日历效果
2021/01/25 Javascript
[02:47]3.19DOTA2发布会 国服成长历程回顾
2014/03/25 DOTA
Python通过4种方式实现进程数据通信
2020/03/12 Python
python程序输出无内容的解决方式
2020/04/09 Python
python matplotlib:plt.scatter() 大小和颜色参数详解
2020/04/14 Python
matplotlib设置颜色、标记、线条,让你的图像更加丰富(推荐)
2020/09/25 Python
Python性能测试工具Locust安装及使用
2020/12/01 Python
学年自我鉴定
2014/01/16 职场文书
《分一分》教学反思
2014/04/13 职场文书
合作经营协议书
2014/04/17 职场文书
水电站项目建议书
2014/05/12 职场文书
小学标准化建设汇报材料
2014/08/16 职场文书
个人房屋买卖协议书(范本)
2014/10/04 职场文书
《开国大典》教学反思
2016/02/16 职场文书
导游词之茶卡盐湖
2019/11/26 职场文书
Nginx快速入门教程
2021/03/31 Servers
使用qt quick-ListView仿微信好友列表和聊天列表的示例代码
2021/06/13 Python
SpringBoot2零基础到精通之异常处理与web原生组件注入
2022/03/22 Java/Android