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动态加载以及确定加载完成的代码
Jul 31 Javascript
jquery ajax结合thinkphp的getjson实现跨域的方法
Jun 06 Javascript
使用jQuery Rotare实现微信大转盘抽奖功能
Jun 20 Javascript
关于JS中的方法是否加括号的问题
Jul 27 Javascript
Angular页面间切换及传值的4种方法
Nov 04 Javascript
详谈JavaScript的闭包及应用
Jan 17 Javascript
js中new一个对象的过程
Feb 20 Javascript
Bootstrap表单简单实现代码
Mar 06 Javascript
Three.js入门之hello world以及如何绘制线
Sep 25 Javascript
vue2.0 实现页面导航提示引导的方法
Mar 13 Javascript
vue2.0 下拉框默认标题设置方法
Aug 22 Javascript
JS前端轻量fabric.js系列物体基类
Aug 05 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
实用函数9
2007/11/08 PHP
php验证邮箱和ip地址最简单方法汇总
2015/10/30 PHP
PHP模板引擎Smarty中变量的使用方法示例
2016/04/11 PHP
JavaScript访问样式表代码
2010/10/15 Javascript
获取当前点击按钮的id用this.id实现
2014/03/17 Javascript
使用jquery.validate自定义方法实现"手机号码或者固话至少填写一个"的逻辑验证
2014/09/01 Javascript
jQuery弹出框代码封装DialogHelper
2015/01/30 Javascript
jQuery简单实现遍历数组的方法
2015/04/14 Javascript
简单实现JS计算器功能
2016/12/21 Javascript
javascript基础知识讲解
2017/01/11 Javascript
深入nodejs中流(stream)的理解
2017/03/27 NodeJs
Bootstrap响应式表格详解
2017/05/23 Javascript
JavaScript设置名字输入不合法的实现方法
2017/05/23 Javascript
Vue组件创建和传值的方法
2018/08/17 Javascript
gulp构建小程序的方法步骤
2019/05/31 Javascript
全面解读Python Web开发框架Django
2014/06/30 Python
OpenCV2从摄像头获取帧并写入视频文件的方法
2018/08/03 Python
Python3 shelve对象持久存储原理详解
2020/03/23 Python
Python sklearn中的.fit与.predict的用法说明
2020/06/28 Python
python接口自动化之ConfigParser配置文件的使用详解
2020/08/03 Python
python读取xml文件方法解析
2020/08/04 Python
H5 video poster属性设置视频封面的方法
2020/05/25 HTML / CSS
美国农场鲜花速递:The Bouqs
2018/07/13 全球购物
be2台湾单身男女交友:全球网路婚姻介绍的领导品牌
2019/10/11 全球购物
日本化妆品植村秀俄罗斯官方网站:Shu Uemura俄罗斯
2020/02/01 全球购物
在SQL Server中创建数据库主要有那种方式
2013/09/10 面试题
用友笔试题目
2016/10/25 面试题
Ruby如何创建一个线程
2013/03/10 面试题
内容编辑个人求职信
2013/12/10 职场文书
励志演讲稿大全
2014/08/21 职场文书
行政秘书工作自我鉴定
2014/09/15 职场文书
职工年度考核评语
2014/12/31 职场文书
清洁工个人工作总结
2015/03/05 职场文书
2015大学生入党个人自传
2015/06/26 职场文书
2016国培学习心得体会
2016/01/08 职场文书
java版 简单三子棋游戏
2022/05/04 Java/Android