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中Array 对象相关的几个方法
Dec 22 Javascript
firefox 和 ie 事件处理的细节,研究,再研究 书写同时兼容ie和ff的事件处理代码
Apr 12 Javascript
零基础学JavaScript最新动画教程+iso光盘下载
Jan 22 Javascript
NODE.JS加密模块CRYPTO常用方法介绍
Jun 05 Javascript
javascript中innerText和innerHTML属性用法实例分析
May 13 Javascript
浅析jQuery事件之on()方法绑定多个选择器,多个事件
Apr 27 Javascript
浅谈React Native 中组件的生命周期
Sep 08 Javascript
JavaScript生成指定范围的时间列表
Mar 19 Javascript
js实现图片局部放大效果详解
Mar 18 Javascript
详解Vue依赖收集引发的问题
Apr 22 Javascript
javascript事件监听与事件委托实例详解
Aug 16 Javascript
原生js实现ajax请求和JSONP跨域请求操作示例
Mar 14 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中extract()函数的妙用分析
2012/07/11 PHP
php除数取整示例
2014/04/24 PHP
PHP接收App端发送文件流的方法
2016/09/23 PHP
Yii遍历行下每列数据的方法
2016/10/17 PHP
jQuery实现单行文字间歇向上滚动源代码
2013/06/02 Javascript
jquery列表拖动排列(由项目提取相当好用)
2014/06/17 Javascript
nodejs批量修改文件编码格式
2015/01/22 NodeJs
使用JavaScript 实现的人脸检测
2015/03/24 Javascript
jQuery选择器源码解读(八):addCombinator函数
2015/03/31 Javascript
JavaScript获得当前网页来源页面(即上一页)的方法
2015/04/03 Javascript
jQuery实现判断滚动条到底部
2015/06/23 Javascript
深入浅析react native es6语法
2015/12/09 Javascript
JavaScript实现的可变动态数字键盘控件方式实例代码
2017/07/15 Javascript
常用的 JS 排序算法 整理版
2018/04/05 Javascript
使用webpack搭建react开发环境的方法
2018/05/15 Javascript
jquery实现二级导航下拉菜单效果实例
2019/05/14 jQuery
JavaScript使用localStorage存储数据
2019/09/25 Javascript
vue中get请求如何传递数组参数的方法示例
2019/11/08 Javascript
TypeScript之调用栈的实现
2019/12/31 Javascript
django+xadmin+djcelery实现后台管理定时任务
2018/08/14 Python
Python基本数据结构之字典类型dict用法分析
2019/06/08 Python
Django自定义用户登录认证示例代码
2019/06/30 Python
Win10系统下安装labelme及json文件批量转化方法
2019/07/30 Python
用python3 urllib破解有道翻译反爬虫机制详解
2019/08/14 Python
python GUI库图形界面开发之PyQt5 UI主线程与耗时线程分离详细方法实例
2020/02/26 Python
Win10下用Anaconda安装TensorFlow(图文教程)
2020/06/18 Python
CSS3实现图片抽屉式效果的示例代码
2019/11/06 HTML / CSS
教你如何一步一步用Canvas写一个贪吃蛇
2018/10/22 HTML / CSS
美国最大的农村生活方式零售店:Tractor Supply Company(TSC)
2017/05/15 全球购物
软件测试笔试题
2012/10/25 面试题
用Python匹配HTML tag的时候,<.*>和<.*?>有什么区别
2012/11/04 面试题
师范生自我鉴定范文
2013/10/05 职场文书
我们的节日国庆活动方案
2014/08/19 职场文书
教师个人工作总结范文2014
2014/11/10 职场文书
居住证明范文
2015/06/17 职场文书
pytorch 使用半精度模型部署的操作
2021/05/24 Python