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 对象与DOM对象之两者相互间的转换
Apr 27 Javascript
JSON 学习之JSON in JavaScript详细使用说明
Feb 23 Javascript
跟着JQuery API学Jquery 之二 属性
Apr 09 Javascript
限制文本框输入N个字符的js代码
May 13 Javascript
jQuery load方法用法集锦
Dec 06 Javascript
jQuery插件原来如此简单 jQuery插件的机制及实战
Feb 07 Javascript
浅谈JS继承_借用构造函数 & 组合式继承
Aug 16 Javascript
利用js+css+html实现固定table的列头不动
Dec 08 Javascript
js手机号批量滚动抽奖实现代码
Apr 17 Javascript
JS实现移动端整屏滑动的实例代码
Nov 10 Javascript
echarts鼠标覆盖高亮显示节点及关系名称详解
Mar 17 Javascript
在vscode 中设置 vue模板内容的方法
Sep 02 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连接MySQL代码的参数说明
2008/06/07 PHP
Linux环境下搭建php开发环境的操作步骤
2013/06/17 PHP
php中mail函数发送邮件失败的解决方法
2014/12/24 PHP
Yii中CGridView实现批量删除的方法
2015/12/28 PHP
谈谈从phpinfo中能获取哪些值得注意的信息
2017/03/28 PHP
PHP5.5新特性之yield理解与用法实例分析
2019/01/11 PHP
JavaScript设置FieldSet展开与收缩
2009/05/15 Javascript
Jquery + Ajax调用webService实例代码(asp.net)
2010/08/27 Javascript
JavaScript 操作键盘的Enter事件(键盘任何事件),兼容多浏览器
2010/10/11 Javascript
js substr支持中文截取函数代码(中文是双字节)
2013/04/17 Javascript
json的使用小结
2016/06/08 Javascript
利用JavaScript实现拖拽改变元素大小
2016/12/14 Javascript
Angular的$http与$location
2016/12/26 Javascript
angularjs实现多张图片上传并预览功能
2017/02/24 Javascript
微信小程序 es6-promise.js封装请求与处理异步进程
2017/06/12 Javascript
Vue和Bootstrap的整合思路详解
2017/06/30 Javascript
JavaScript实现简单的双色球(实例讲解)
2017/07/31 Javascript
JavaScript实现简单的文本逐字打印效果示例
2018/04/12 Javascript
JS构造一个html文本内容成文件流形式发送到后台
2018/07/31 Javascript
Python转码问题的解决方法
2008/10/07 Python
简单介绍Python的Django框架的dj-scaffold项目
2015/05/30 Python
Python cookbook(字符串与文本)在字符串的开头或结尾处进行文本匹配操作
2018/04/20 Python
Python rabbitMQ如何实现生产消费者模式
2020/08/24 Python
css sprite简单实例
2016/05/23 HTML / CSS
localStorage 设置过期时间的方法实现
2018/12/21 HTML / CSS
工作交流会欢迎词
2014/01/12 职场文书
《世界多美呀》教学反思
2014/03/02 职场文书
寄语学生的话
2014/04/10 职场文书
五一活动标语
2014/06/30 职场文书
教师拔河比赛广播稿
2014/10/14 职场文书
中学生勤俭节约倡议书
2015/04/29 职场文书
煤矿百日安全活动总结
2015/05/07 职场文书
天气温馨提示语
2015/07/14 职场文书
文艺委员竞选稿
2015/11/19 职场文书
数学复习课教学反思
2016/02/18 职场文书
Nginx动静分离配置实现与说明
2022/04/07 Servers