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  THIS详解 面向对象
Mar 25 Javascript
javascript表单验证 - Parsley.js使用和配置
Jan 25 Javascript
用javascript添加控件自定义属性解析
Nov 25 Javascript
PHP使用方法重载实现动态创建属性的get和set方法
Nov 17 Javascript
Javascript基础教程之函数对象和属性
Jan 18 Javascript
javascript url几种编码方式详解
Jun 06 Javascript
浅谈时钟的生成(js手写简洁代码)
Aug 20 Javascript
jQuery插件FusionCharts实现的MSBar2D图效果示例【附demo源码】
Mar 24 jQuery
vue router仿天猫底部导航栏功能
Oct 18 Javascript
详解vue+vuex+koa2开发环境搭建及示例开发
Jan 22 Javascript
浅谈KOA2 Restful方式路由初探
Mar 14 Javascript
vue excel上传预览和table内容下载到excel文件中
Dec 10 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内置访问资源的超时时间 time_out file_get_contents read_file
2013/06/03 PHP
PHP实现获取中英文首字母
2015/06/19 PHP
静态html文件执行php语句的方法(推荐)
2016/11/21 PHP
PHP判断数组是否为空的常用方法(五种方法)
2017/02/08 PHP
Javascript+XMLHttpRequest+asp.net无刷新读取数据库数据
2009/08/09 Javascript
使用jQuery fancybox插件打造一个实用的数据传输模态弹出窗体
2013/01/15 Javascript
jquery控制左右箭头滚动图片列表的实例
2013/05/20 Javascript
js打开新窗口方法整理
2014/02/17 Javascript
跟我学习javascript的arguments对象
2015/11/16 Javascript
JS实现密码框根据焦点的获取与失去控制文字的消失与显示效果
2015/11/26 Javascript
jquery实现下拉框功能效果【实例代码】
2016/05/06 Javascript
JS获取子窗口中返回的数据实现方法
2016/05/28 Javascript
微信小程序实现通过js操作wxml的wxss属性示例
2018/12/06 Javascript
vue ajax 拦截原理与实现方法示例
2019/11/29 Javascript
跟老齐学Python之开始真正编程
2014/09/12 Python
Python中使用第三方库xlrd来读取Excel示例
2015/04/05 Python
Python实现的json文件读取及中文乱码显示问题解决方法
2018/08/06 Python
深入浅析Python2.x和3.x版本的主要区别
2018/11/30 Python
python频繁写入文件时提速的方法
2019/06/26 Python
Django+zTree构建组织架构树的方法
2019/08/21 Python
Python字符串的修改方法实例
2019/12/19 Python
Python实现大数据收集至excel的思路详解
2020/01/03 Python
python简单实现插入排序实例代码
2020/12/16 Python
HTML5 Canvas实现玫瑰曲线和心形图案的代码实例
2014/04/10 HTML / CSS
将世界上最美丽的摄影作品转化为艺术作品:Photos.com
2017/11/28 全球购物
Spartoo西班牙官网:法国时尚购物网站
2018/03/27 全球购物
俄罗斯领先的移动和数字设备在线商店:Svyaznoy.ru
2020/12/21 全球购物
大学四年规划书范文
2013/12/27 职场文书
副科竞争上岗演讲稿
2014/05/12 职场文书
最常使用的求职信
2014/05/25 职场文书
法院干警四风问题自我剖析材料
2014/09/29 职场文书
商务考察邀请函模板
2015/02/02 职场文书
写给消防战士们的一封慰问信
2019/10/07 职场文书
配置nginx 重定向到系统维护页面
2021/06/08 Servers
Pygame Event事件模块的详细示例
2021/11/17 Python
python中使用redis用法详解
2022/12/24 Redis