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下IE与FF兼容函数收集
Sep 17 Javascript
jQuery代码优化之基本事件
Nov 01 Javascript
jquery 取子节点及当前节点属性值
Jul 25 Javascript
easyui combobox开启搜索自动完成功能的实例代码
Nov 08 Javascript
node+express制作爬虫教程
Nov 11 Javascript
基于javascript实现数字英文验证码
Jan 25 Javascript
JS实现复制内容到剪贴板功能
Feb 05 Javascript
js记录点击某个按钮的次数-刷新次数为初始状态的实例
Feb 15 Javascript
BootStrap fileinput.js文件上传组件实例代码
Feb 20 Javascript
JavaScript实现微信号随机切换代码
Mar 09 Javascript
详解JavaScript的变量
Apr 04 Javascript
基于js实现逐步显示文字输出代码实例
Apr 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
关于file_get_contents返回为空或函数不可用的解决方案
2013/06/24 PHP
php获取客户端IP及URL的方法示例
2017/02/03 PHP
PDO::inTransaction讲解
2019/01/28 PHP
laravel 实现划分admin和home 模块分组
2019/10/15 PHP
Alliance vs Liquid BO3 第三场2.13
2021/03/10 DOTA
纯JavaScript实现的完美渐变弹出层效果代码
2010/04/02 Javascript
DWZ table的原生分页浅谈
2013/03/01 Javascript
javascript对话框使用方法(警告框 javascript确认框 提示框)
2014/01/07 Javascript
浏览器窗口加载和大小改变事件示例
2014/02/27 Javascript
js使用html()或text()方法获取设置p标签的显示的值
2014/08/01 Javascript
jquery if条件语句的写法
2016/05/19 Javascript
简单模拟node.js中require的加载机制
2016/10/27 Javascript
jQuery Ajax 实现在html页面实时显示用户登录状态
2016/12/30 Javascript
JS实现多张图片预览同步上传功能
2017/06/23 Javascript
js学习总结之DOM2兼容处理重复问题的解决方法
2017/07/27 Javascript
vue解决跨域路由冲突问题思路解析
2017/11/03 Javascript
用Vue写一个分页器的示例代码
2018/04/22 Javascript
vuex与组件联合使用的方法
2018/05/10 Javascript
Vue2.0学习系列之项目上线的方法步骤(图文)
2018/09/25 Javascript
js array数组对象操作方法汇总
2019/03/18 Javascript
Django发送html邮件的方法
2015/05/26 Python
记一次python 内存泄漏问题及解决过程
2018/11/29 Python
Python语言进阶知识点总结
2019/05/28 Python
pandas通过字典生成dataframe的方法步骤
2019/07/23 Python
pygame库实现俄罗斯方块小游戏
2019/10/29 Python
Python jieba库用法及实例解析
2019/11/04 Python
最小二乘法及其python实现详解
2020/02/24 Python
阿根廷旅游网站:almundo阿根廷
2018/02/12 全球购物
亚洲航空公司官方网站:AirAsia
2019/11/25 全球购物
互联网创业计划书的书写步骤
2014/01/28 职场文书
公司采购主管岗位职责
2014/06/17 职场文书
支部书记四风对照材料
2014/08/28 职场文书
2014学习优秀共产党员先进事迹材料思想汇报
2014/09/14 职场文书
个人自我剖析材料
2014/09/30 职场文书
2015年度企业工作总结
2015/05/21 职场文书
如何制定销售人员薪酬制度?
2019/07/09 职场文书