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清除IE浏览器缓存的方法
Jul 26 Javascript
遍历DOM对象内的元素属性示例代码
Feb 08 Javascript
js实现按钮颜色渐变动画效果
Aug 20 Javascript
跟我学习javascript的异步脚本加载
Nov 20 Javascript
浅谈String.valueOf()方法的使用
Jun 06 Javascript
jQuery获取select选中的option的value值实现方法
Aug 29 Javascript
JavaScript 继承详解(六)
Oct 11 Javascript
JavaScript中创建对象的7种模式详解
Feb 21 Javascript
AngularJS 单选框及多选框的双向动态绑定
Apr 20 Javascript
神级程序员JavaScript300行代码搞定汉字转拼音
May 20 Javascript
微信小程序对接七牛云存储的方法
Jul 30 Javascript
Vue学习之axios的使用方法实例分析
Jan 06 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函数 serialize()和unserialize()
2012/02/04 PHP
解析zend Framework如何自动加载类
2013/06/28 PHP
PHP中魔术变量__METHOD__与__FUNCTION__的区别
2014/09/29 PHP
Ubuntu中搭建Nginx、PHP环境最简单的方法
2015/03/05 PHP
php校验表单检测字段是否为空的方法
2015/03/20 PHP
php cli配置文件问题分析
2015/10/15 PHP
php微信开发之关注事件
2018/06/14 PHP
Prototype Template对象 学习
2009/07/19 Javascript
jQuery中:eq()选择器用法实例
2014/12/29 Javascript
JS实现简单路由器功能的方法
2015/05/27 Javascript
JS常见问题之为什么点击弹出的i总是最后一个
2016/01/05 Javascript
Bootstrap模态框(Modal)实现过渡效果
2017/03/17 Javascript
用JS编写一个函数,返回数组中重复出现过的元素(实例)
2017/09/14 Javascript
VSCode 配置React Native开发环境的方法
2017/12/27 Javascript
element-ui中按需引入的实现
2019/12/25 Javascript
html-webpack-plugin修改页面的title的方法
2020/06/18 Javascript
python之wxPython应用实例
2014/09/28 Python
Python格式化压缩后的JS文件的方法
2015/03/05 Python
Python中的测试模块unittest和doctest的使用教程
2015/04/14 Python
在Python中使用__slots__方法的详细教程
2015/04/28 Python
让代码变得更易维护的7个Python库
2018/10/09 Python
使用Tkinter制作信息提示框
2020/02/18 Python
Pycharm pyuic5实现将ui文件转为py文件,让UI界面成功显示
2020/04/08 Python
django实现日志按日期分割
2020/05/21 Python
利用HTML5中的Canvas绘制一张笑脸的教程
2015/05/07 HTML / CSS
XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?
2016/01/12 面试题
工程总经理工作职责
2013/12/09 职场文书
打架检讨书800字
2014/01/10 职场文书
十一酒店活动方案
2014/02/20 职场文书
工作过失检讨书
2014/02/23 职场文书
2014年国庆节活动总结
2014/08/26 职场文书
群众路线学习笔记范文
2014/11/06 职场文书
小区保洁员岗位职责
2015/04/10 职场文书
校长新学期致辞
2015/07/30 职场文书
500字作文之周记
2019/12/13 职场文书
MySQL中distinct与group by之间的性能进行比较
2021/05/26 MySQL