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 相关文章推荐
基于jquery的防止大图片撑破页面的实现代码(立即缩放)
Oct 24 Javascript
如何使用json在前后台进行数据传输实例介绍
Apr 11 Javascript
jQuery文本框(input textare)事件绑定方法教程
Apr 24 Javascript
jQuery获得页面元素的绝对/相对位置即绝对X,Y坐标
Mar 06 Javascript
JS数组操作(数组增加、删除、翻转、转字符串、取索引、截取(切片)slice、剪接splice、数组合并)
May 20 Javascript
JS中append字符串包含onclick无效传递参数失败的解决方案
Dec 26 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的三大方法
Jan 22 Javascript
Ionic 2 实现列表滑动删除按钮的方法
Jan 22 Javascript
Node.JS使用Sequelize操作MySQL的示例代码
Oct 09 Javascript
使用Vue自定义指令实现Select组件
May 24 Javascript
详解.vue文件中style标签的几个标识符
Jul 17 Javascript
JS window对象简单操作完整示例
Jan 14 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
优化NFR之一 --MSSQL Hello Buffer Overflow
2006/10/09 PHP
windows下apache搭建php开发环境
2015/08/27 PHP
PHP命名空间定义与用法实例分析
2019/08/14 PHP
php使用event扩展的io复用测试的示例
2020/10/20 PHP
Extjs优化(一)删除冗余代码提高运行速度
2013/04/15 Javascript
jquery实现鼠标悬浮停止轮播特效
2020/08/20 Javascript
js一维数组、多维数组和对象的混合使用方法
2016/04/03 Javascript
jquery mobile界面数据刷新的实现方法
2016/05/28 Javascript
Javascript闭包与函数柯里化浅析
2016/06/22 Javascript
浅谈js中字符和数组一些基本算法题
2016/08/15 Javascript
js微信扫描二维码登录网站技术原理
2016/12/01 Javascript
Bootstrap基本组件学习笔记之下拉菜单(7)
2016/12/07 Javascript
jquery操作ID带有变量的节点实例
2016/12/07 Javascript
AngularJS指令与指令之间的交互功能示例
2016/12/14 Javascript
vue2.0实现导航菜单切换效果
2017/05/08 Javascript
jQuery开源组件BootstrapValidator使用详解
2017/06/29 jQuery
angular4 如何在全局设置路由跳转动画的方法
2017/08/30 Javascript
Vue导出json数据到Excel电子表格的示例
2017/12/04 Javascript
nodejs同步调用获取mysql数据时遇到的大坑
2019/03/02 NodeJs
Vue实现移动端拖拽交换位置
2020/07/29 Javascript
vue项目中微信登录的实现操作
2020/09/08 Javascript
vue使用transition组件动画效果的实例代码
2021/01/28 Vue.js
[57:55]EG vs Fnatic 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
[04:50]2019DOTA2高校联赛秋季赛四强集锦
2019/12/27 DOTA
python pandas模块基础学习详解
2019/07/03 Python
使用AJAX和Django获取数据的方法实例
2020/10/25 Python
美国电子元器件分销商:Newark element14
2018/01/13 全球购物
新加坡网上化妆品店:Best Buy World
2018/05/18 全球购物
调解协议书
2014/04/16 职场文书
学雷锋月活动总结
2014/04/25 职场文书
自主招生推荐信范文
2014/05/10 职场文书
机关作风建设剖析材料
2014/10/11 职场文书
2015年行政工作总结范文
2015/04/09 职场文书
爱国影片观后感
2015/06/18 职场文书
贴吧吧主申请感言
2015/08/03 职场文书
记一次Mysql不走日期字段索引的原因小结
2021/10/24 MySQL