Javascript中使用parseInt函数需要注意的问题


Posted in Javascript onApril 02, 2015

前些天信用卡站点要接入一个新功能,不过还真比较坑爹,asp站点,大家都知道信用卡的背面是有一个有效期的,在对接银行中这个信息一定是要传给银行做数据校验,用户在语音输入信用卡有效期后,系统会做一个有效期判断,为了不必要的麻烦,就是判断过期时间一定不能在一个月内,由于输入的年月日在三个文本框中,再加上我嫌转成时间麻烦,就索性直接拿年,月,日的文本内容直接强转成int类型来判断,此为背景。

Javascript中使用parseInt函数需要注意的问题

说了这么多,终于说到文章主题了,我们知道有效期有这样的:2015-09-20,我就毫不犹豫的从月文本框中拿出了"09",然后屁颠屁颠的在chrome下做了如下转换,很开心,搞定。

Javascript中使用parseInt函数需要注意的问题

 

下午测试小妹妹反馈过来说,信用卡有效期判断有问题,比较诧异,在自己机器上怎么试都没有问题,然后没辙,只能亲自去小妹妹桌上看看,顺便搽点油,开着IE调试器调试了下,果然,灵异事件发生了,现在终于找到问题所在了。

Javascript中使用parseInt函数需要注意的问题

 

当时测试小妹妹装的是IE8,然后在IE8下面parseint默认会把我的“09”当成八进制,但是又发现不是合法的八进制,最后就抛出了0这个false,我们也看到在chrome下,“09”会默认当做十进制来看的,所以js引擎会理所当然的转化成了9这个我满意的结果,所以嘛,IE真的是不按照人的常理出牌,现在我们该如果解决呢?

 

一:解决方案

<1> 刚才讨论中也发现了,parseInt在不同的浏览器下有不同的默认行为处理,没辙,又看不到parseint底层是怎么处理的,只能去找javascript的api文档这个黑盒去看一看,然后就发现一个让我很惊喜的radix参数。Javascript中使用parseInt函数需要注意的问题

  知道了这个radix,问题就可以迎刃而解了,现在我只需指定下radix=10即可,如图:

Javascript中使用parseInt函数需要注意的问题

 

不过后来发现在IE9下面,parseint在缺失radix的时候底层也是默认采用十进制的,终于微软为了符合大众口味做了正确的修改。Javascript中使用parseInt函数需要注意的问题

 

<2>除了parseint这个函数,其实还有一个Number函数也可以帮你解决这个问题,并且在IE7,8上面都是没有问题的,由于在js中,如果你去new 一下这个Number的话,那就可以生成Number对象了,这一点和C#有一些区别,所以下面我可以用两种方式看一下。

Javascript中使用parseInt函数需要注意的问题

 

这个Number的好处在于只会处理十进制数值,而且还有其他特殊的玩法,不像parseint只接受string的参数,number可以接受任何类型,比如:

Javascript中使用parseInt函数需要注意的问题

由于看不到Number底层的源码,所以针对这些问题,我们也只能道听途说来记住了,这也是JS与其他托管语言不一样的地方。

Javascript 相关文章推荐
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
Aug 15 Javascript
js DOM的学习笔记
Dec 22 Javascript
JavaScript高级程序设计(第3版)学习笔记12 js正则表达式
Oct 11 Javascript
JS控制弹出悬浮窗口(一览画面)的实例代码
May 30 Javascript
html+js+highcharts绘制圆饼图表的简单实例
Aug 04 Javascript
jquery属性,遍历,HTML操作方法详解
Sep 17 Javascript
jQuery css() 方法动态修改CSS属性
Sep 25 Javascript
Bootstrap实现带暂停功能的轮播组件(推荐)
Nov 25 Javascript
微信小程序movable view移动图片和双指缩放实例代码
Aug 08 Javascript
vue以组件或者插件的形式实现throttle或者debounce
May 22 Javascript
Vue路由管理器Vue-router的使用方法详解
Feb 05 Javascript
vue项目使用$router.go(-1)返回时刷新原来的界面操作
Jul 26 Javascript
Yii2使用Bootbox插件实现自定义弹窗
Apr 02 #Javascript
jquery制作多功能轮播图插件
Apr 02 #Javascript
Javascript中3个需要注意的运算符
Apr 02 #Javascript
原生JS实现响应式瀑布流布局
Apr 02 #Javascript
Javascript变量的作用域和作用域链详解
Apr 02 #Javascript
JavaScript中连接操作Oracle数据库实例
Apr 02 #Javascript
JavaScript中操作Mysql数据库实例
Apr 02 #Javascript
You might like
php获取通过http协议post提交过来xml数据及解析xml
2012/12/16 PHP
PHP实现的CURL非阻塞调用类
2018/07/26 PHP
两个select之间option的互相添加操作(jquery实现)
2009/11/12 Javascript
js 点击按钮弹出另一页,选择值后,返回到当前页
2010/05/26 Javascript
两个多选select(multiple左右)添加、删除选项和取值实例
2014/05/12 Javascript
ext中store.load跟store.reload的区别示例介绍
2014/06/17 Javascript
js获取元素外链样式的方法
2015/01/27 Javascript
BootStrap制作导航条实例代码
2016/05/06 Javascript
NodeJs模拟登陆正方教务
2017/04/28 NodeJs
Vue.js tab实现选项卡切换
2017/05/16 Javascript
Django使用多数据库的方法
2017/09/06 Javascript
jQuery实现文件编码成base64并通过AJAX上传的方法
2018/04/12 jQuery
Bootstrap Table实现定时刷新数据的方法
2018/08/13 Javascript
vue中设置、获取、删除cookie的方法
2018/09/21 Javascript
浅谈angularJs函数的使用方法(大小写转换,拷贝,扩充对象)
2018/10/08 Javascript
Vue.js自定义指令学习使用详解
2019/10/19 Javascript
微信小程序实现手指拖动选项排序
2020/04/22 Javascript
vant时间控件使用方法详解
2020/12/24 Javascript
element-ui封装一个Table模板组件的示例
2021/01/04 Javascript
Python中使用ElementTree解析XML示例
2015/06/02 Python
python中使用psutil查看内存占用的情况
2018/06/11 Python
python使用PIL模块获取图片像素点的方法
2019/01/08 Python
python计算无向图节点度的实例代码
2019/11/22 Python
python小白学习包管理器pip安装
2020/06/09 Python
移动端开发HTML5页面点击按钮后出现闪烁或黑色背景的解决办法
2018/09/19 HTML / CSS
新加坡领先的在线生活方式和杂货购物网站:EAMART
2019/04/02 全球购物
质检的岗位职责
2013/11/17 职场文书
入党自我评价优缺点
2014/01/25 职场文书
工商局局长个人对照检查材料思想汇报
2014/09/23 职场文书
苦儿流浪记读书笔记
2015/07/01 职场文书
信息简报范文
2015/07/21 职场文书
礼仪培训心得体会
2016/01/22 职场文书
教你利用Selenium+python自动化来解决pip使用异常
2021/05/20 Python
pytorch 6 batch_train 批训练操作
2021/05/28 Python
浅谈mysql返回Boolean类型的几种情况
2021/06/04 MySQL
解析Java中的static关键字
2021/06/14 Java/Android