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 相关文章推荐
window.parent与window.openner区别介绍
Apr 12 Javascript
图片延迟加载的实现代码(模仿懒惰)
Mar 29 Javascript
javascript数组操作(创建、元素删除、数组的拷贝)
Apr 07 Javascript
JavaScript实现向setTimeout执行代码传递参数的方法
Apr 16 Javascript
基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍
May 12 Javascript
AngularJS 如何在控制台进行错误调试
Jun 07 Javascript
JavaScript易错知识点整理
Dec 05 Javascript
jquery实现百叶窗效果
Jan 12 Javascript
js正则表达式验证密码强度【推荐】
Mar 03 Javascript
基于JavaScript实现微信抢红包功能
Jul 20 Javascript
Vue实战教程之仿肯德基宅急送App
Jul 19 Javascript
vue点击按钮实现简单页面的切换
Sep 08 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中通过ADO调用Asscess数据库和COM程序
2006/10/09 PHP
如何用C语言编写PHP扩展的详解
2013/06/13 PHP
PHP清除数组中所有字符串两端空格的方法
2014/10/20 PHP
yii用户注册表单验证实例
2015/12/26 PHP
PHP抓取及分析网页的方法详解
2016/04/26 PHP
实例:用 JavaScript 来操作字符串(一些字符串函数)
2007/02/15 Javascript
javascript之卸载鼠标事件的代码
2007/05/14 Javascript
jquery checkbox 勾选的bug问题解决方案与分析
2014/11/13 Javascript
JavaScript不使用prototype和new实现继承机制
2014/12/29 Javascript
JQuery实现带排序功能的权限选择实例
2015/05/18 Javascript
JS实现屏蔽shift,Ctrl,alt等功能键的方法
2015/06/01 Javascript
JQuery日期插件datepicker的使用方法
2016/03/03 Javascript
jQuery绑定事件on()与弹窗的简要概述
2016/04/27 Javascript
JavaScript简单获取页面图片原始尺寸的方法
2016/06/21 Javascript
KnockoutJS 3.X API 第四章之事件event绑定
2016/10/10 Javascript
jQuery插件Echarts实现的渐变色柱状图
2017/03/23 jQuery
js轮播图的插件化封装详解
2017/07/17 Javascript
nginx配置React静态页面的方法教程
2017/11/03 Javascript
vue 全局环境切换问题
2019/10/27 Javascript
python自动化工具日志查询分析脚本代码实现
2013/11/26 Python
Windows系统下安装Python的SSH模块教程
2015/02/05 Python
python生成IP段的方法
2015/07/07 Python
python3实现163邮箱SMTP发送邮件
2018/05/22 Python
django ModelForm修改显示缩略图 imagefield类型的实例
2019/07/28 Python
opencv resize图片为正方形尺寸的实现方法
2019/12/26 Python
Pytorch实现WGAN用于动漫头像生成
2021/03/04 Python
IE8下CSS3选择器nth-child() 不兼容问题的解决方法
2016/11/16 HTML / CSS
美国知名奢侈美容品牌零售商:Cos Bar
2017/04/21 全球购物
英国美术用品购物网站:Cass Art
2019/10/08 全球购物
兰蔻俄罗斯官方网站:Lancome俄罗斯
2019/12/09 全球购物
师范生自荐信
2013/10/27 职场文书
法警的竞聘演讲稿
2014/01/02 职场文书
职业生涯规划书范文
2014/03/10 职场文书
党支部三会一课计划
2014/09/24 职场文书
2015年学校教育教学工作总结
2015/04/22 职场文书
go xorm框架的使用
2021/05/22 Golang