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+mapbar实现地图定位
Apr 09 Javascript
jQuery判断元素是否是隐藏的代码
Apr 24 Javascript
jquery入门—选择器实现隔行变色实例代码
Jan 04 Javascript
php结合imgareaselect实现图片裁剪
Jul 05 Javascript
JS+CSS3模拟溢出滚动效果
Aug 12 Javascript
JavaScript实现星级评分
Jan 12 Javascript
vue 2.0封装model组件的方法
Aug 03 Javascript
Node.js模块全局安装路径配置方法
May 17 Javascript
原来JS还可以这样拆箱转换详解
Feb 01 Javascript
Angular CLI 使用教程指南参考小结
Apr 10 Javascript
layui--js控制switch的切换方法
Sep 03 Javascript
JS sort方法基于数组对象属性值排序
Jul 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
2019年中国咖啡业现状与发展趋势
2021/03/04 咖啡文化
傻瓜化配置PHP环境――Appserv
2006/12/13 PHP
PHP面向对象精要总结
2014/11/07 PHP
让你的PHP7更快之Hugepage用法分析
2016/05/31 PHP
Laravel配合jwt使用的方法实例
2020/10/25 PHP
深入理解JavaScript系列(14) 作用域链介绍(Scope Chain)
2012/04/12 Javascript
Javascript Boolean、Nnumber、String 强制类型转换的区别详细介绍
2012/12/13 Javascript
判断某个字符在一个字符串中是否存在的js代码
2014/02/28 Javascript
jquery提交form表单简单示例分享
2014/03/03 Javascript
深入学习JavaScript中的Rest参数和参数默认值
2015/07/28 Javascript
jQuery 1.9.1源码分析系列(十四)之常用jQuery工具
2015/12/02 Javascript
JavaScript闭包实例详解
2016/06/03 Javascript
AngularJS API之copy深拷贝详解及实例
2016/09/14 Javascript
BootStrap的两种模态框方式
2017/05/10 Javascript
JQuery 获取多个select标签option的text内容(实例)
2017/09/07 jQuery
原生JS实现简单的无缝自动轮播效果
2018/09/26 Javascript
详解在微信小程序的JS脚本中使用Promise来优化函数处理
2019/03/06 Javascript
浅析vue-router中params和query的区别
2019/12/24 Javascript
原生JS实现顶部导航栏显示按钮+搜索框功能
2019/12/25 Javascript
vue封装自定义指令之动态显示title操作(溢出显示,不溢出不显示)
2020/11/12 Javascript
[47:08]OG vs INfamous 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
快速解决安装python没有scripts文件夹的问题
2018/04/03 Python
python数字图像处理实现直方图与均衡化
2018/05/04 Python
Python实现提取XML内容并保存到Excel中的方法
2018/09/01 Python
对python 匹配字符串开头和结尾的方法详解
2018/10/27 Python
使用pandas的box_plot去除异常值
2019/12/10 Python
Python pygame绘制文字制作滚动文字过程解析
2019/12/12 Python
以SQLite和PySqlite为例来学习Python DB API
2020/02/05 Python
Python使用pyyaml模块处理yaml数据
2020/04/14 Python
俄罗斯苹果优质经销商商店:iPort
2020/05/27 全球购物
市场部规章制度
2014/01/24 职场文书
公司端午节活动方案
2014/02/04 职场文书
医学生毕业自我鉴定
2014/03/26 职场文书
安全生产工作汇报材料
2014/10/28 职场文书
2015年六一儿童节活动总结
2015/02/11 职场文书
导游词之山西关帝庙
2019/11/01 职场文书