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 相关文章推荐
ie8下修改input的type属性报错的解决方法
Sep 16 Javascript
JavaScript数组Array对象增加和删除元素方法总结
Jan 20 Javascript
JavaScript自定义等待wait函数实例分析
Mar 23 Javascript
JS判断当前页面是否在微信浏览器打开的方法
Dec 08 Javascript
微信小程序 location API实例详解
Oct 02 Javascript
bootstrap daterangepicker双日历时间段选择控件详解
Jun 15 Javascript
jQuery实现输入框的放大和缩小功能示例
Jul 21 jQuery
Vue中 v-if 和v-else-if页面加载出现闪现的问题及解决方法
Oct 12 Javascript
JavaScript实现表单注册、表单验证、运算符功能
Oct 15 Javascript
vue微信分享到朋友圈 vue微信发送给好友
Nov 28 Javascript
js实现提交前对列表数据的增删改查
Jan 16 Javascript
如何在JS文件中获取Vue组件
Sep 16 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 三维饼图的实现代码
2008/09/28 PHP
重新封装zend_soap实现http连接安全认证的php代码
2011/01/12 PHP
php通过strpos查找字符串出现位置的方法
2015/03/17 PHP
PHP 进度条函数的简单实例
2017/09/19 PHP
启用OPCache提高PHP程序性能的方法
2019/03/21 PHP
如何用javascript控制上传文件的大小
2006/10/26 Javascript
飞鱼(shqlsl) javascript作品集
2006/12/16 Javascript
读jQuery之一(对象的组成)
2011/06/11 Javascript
node.js中的fs.close方法使用说明
2014/12/17 Javascript
JavaScript学习笔记之定时器
2015/01/22 Javascript
javascript事件的绑定基础实例讲解(34)
2017/02/14 Javascript
JS异步文件上传(兼容IE8+)
2017/04/02 Javascript
浅析webpack 如何优雅的使用tree-shaking(摇树优化)
2017/08/16 Javascript
浅谈vue中使用图片懒加载vue-lazyload插件详细指南
2017/10/23 Javascript
Vue 路由 过渡动效 数据获取方法
2018/07/31 Javascript
Vue 中对图片地址进行拼接的方法
2018/09/03 Javascript
微信小程序和H5页面间相互跳转代码实例
2019/09/19 Javascript
Python变量和字符串详解
2017/04/29 Python
Python实现修改文件内容的方法分析
2018/03/25 Python
Centos部署django服务nginx+uwsgi的方法
2019/01/02 Python
python遍历文件目录、批量处理同类文件
2019/08/31 Python
tensorflow 分类损失函数使用小记
2020/02/18 Python
Python读取excel文件中带公式的值的实现
2020/04/17 Python
django使用JWT保存用户登录信息
2020/04/22 Python
BIBLOO捷克:购买女装、男装、童装、鞋和配件
2017/01/27 全球购物
德国珠宝和配件商店:Styleserver
2021/02/23 全球购物
大学生关于奋斗的演讲稿
2014/01/09 职场文书
人事档案接收函
2014/01/12 职场文书
2014年“四风”问题个人整改措施
2014/09/17 职场文书
党的群众路线领导班子整改方案
2014/09/27 职场文书
2015年青年志愿者工作总结
2015/05/20 职场文书
天堂的孩子观后感
2015/06/11 职场文书
呼啸山庄读书笔记
2015/06/29 职场文书
推广普通话的宣传语
2015/07/13 职场文书
法制教育讲座心得体会
2016/01/14 职场文书
Django 实现jwt认证的示例
2021/04/30 Python