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 select的操作实现代码
May 06 Javascript
Jquery ajax传递复杂参数给WebService的实现代码
Aug 08 Javascript
jquery打开直接跳到网页最下面、最低端实现代码
Apr 22 Javascript
node.js中的fs.readlink方法使用说明
Dec 17 Javascript
javascript读取文本节点方法小结
Dec 15 Javascript
jQuery插件HighCharts绘制2D带Label的折线图效果示例【附demo源码下载】
Mar 08 Javascript
深入理解JavaScript继承的多种方式和优缺点
May 12 Javascript
angular2 ng2-file-upload上传示例代码
Aug 23 Javascript
iview在vue-cli3如何按需加载的方法
Oct 31 Javascript
使用Angular material主题定义自己的组件库的配色体系
Sep 04 Javascript
微信小程序一周时间表功能实现
Oct 17 Javascript
在vue项目中引用Antv G2,以饼图为例讲解
Oct 28 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中把错误日志保存在系统日志中(Windows系统)
2015/06/23 PHP
Prototype 1.5.0_rc1 及 Prototype 1.5.0 Pre0小抄本
2006/09/22 Javascript
JavaScript中使用arguments获得函数传参个数实例
2014/08/27 Javascript
js实现按一下删除键删除整个单词附demo
2014/09/05 Javascript
原生javascript实现DIV拖拽并计算重复面积
2015/01/02 Javascript
快速掌握WordPress中加载JavaScript脚本的方法
2015/12/17 Javascript
jQuery自定义元素右键点击事件(实现案例)
2017/04/28 jQuery
JS实现页面内跳转的简单代码
2017/09/03 Javascript
JavaScript伪数组用法实例分析
2017/12/22 Javascript
Vue监听事件实现计数点击依次增加的方法
2018/09/26 Javascript
通过实例解析js简易模块加载器
2019/06/17 Javascript
vue2 拖动排序 vuedraggable组件的实现
2019/08/08 Javascript
[03:59]5分钟带你了解什么是DOTA2(第二期)
2017/02/07 DOTA
python检测服务器是否正常
2014/02/16 Python
python修改操作系统时间的方法
2015/05/18 Python
一个Python最简单的接口自动化框架
2018/01/02 Python
Python系统监控模块psutil功能与经典用法分析
2018/05/24 Python
python实现嵌套列表平铺的两种方法
2018/11/08 Python
基于python实现百度翻译功能
2019/05/09 Python
基于Python获取照片的GPS位置信息
2020/01/20 Python
Python爬虫实现自动登录、签到功能的代码
2020/08/20 Python
用python对excel查重
2020/12/07 Python
Python实现Excel自动分组合并单元格
2021/02/22 Python
CSS3新增布局之: flex详解
2020/06/18 HTML / CSS
HTML5中新标签和常用标签详解
2014/03/07 HTML / CSS
Watchshop德国:欧洲在线手表No.1
2019/06/20 全球购物
自动化工程专业个人应聘自荐信
2013/09/26 职场文书
学校后勤人员职责
2013/12/27 职场文书
2014年3.15团委活动总结
2014/03/16 职场文书
群众路线领导对照材料
2014/08/23 职场文书
大学生第一学年自我鉴定
2014/09/12 职场文书
长城导游词400字
2015/01/30 职场文书
2015年部门工作总结范文
2015/03/31 职场文书
原料仓管员岗位职责
2015/04/01 职场文书
贫民窟的百万富翁观后感
2015/06/09 职场文书
Python turtle实现贪吃蛇游戏
2021/06/18 Python