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 相关文章推荐
基于jquery的inputlimiter 实现字数限制功能
May 30 Javascript
[JSF]使用DataModel处理表行事件的实例代码
Aug 05 Javascript
浅谈angular.js中实现双向绑定的方法$watch $digest $apply
Oct 14 Javascript
超详细的javascript数组方法汇总
Nov 21 Javascript
jQuery进行组件开发完整实例
Dec 15 Javascript
基于BootStrap Metronic开发框架经验小结【二】列表分页处理和插件JSTree的使用
May 12 Javascript
TypeScript入门-基本数据类型
Mar 28 Javascript
JS数组操作中的经典算法实例讲解
Jul 26 Javascript
JavaScript基于面向对象实现的猜拳游戏
Jan 03 Javascript
javascript递归函数定义和用法示例分析
Jul 22 Javascript
解决vue刷新页面以后丢失store的数据问题
Aug 11 Javascript
ES6的循环与可迭代对象示例详解
Jan 31 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之第八天
2006/10/09 PHP
Php Image Resize图片大小调整的函数代码
2011/01/17 PHP
什么是PHP7中的孤儿进程与僵尸进程
2019/04/14 PHP
prototype class详解
2006/09/07 Javascript
基于jQuery的淡入淡出可自动切换的幻灯插件打包下载
2010/09/15 Javascript
更换select下拉菜单背景样式的实现代码
2011/12/20 Javascript
jquery淡入淡出效果简单实例
2016/01/14 Javascript
Jquery实现的简单轮播效果【附实例】
2016/04/19 Javascript
详解Angular开发中的登陆与身份验证
2016/07/27 Javascript
angular.JS实现网页禁用调试、复制和剪切
2017/03/31 Javascript
JS中正则表达式全局匹配模式 /g用法详解
2017/04/01 Javascript
详解为Bootstrap Modal添加拖拽的方法
2018/01/05 Javascript
关于JavaScript中高阶函数的魅力详解
2018/09/07 Javascript
详解微信小程序中组件通讯
2018/10/30 Javascript
Vue入门之数量加减运算操作示例
2018/12/11 Javascript
Python两个整数相除得到浮点数值的方法
2015/03/18 Python
Python脚本在Appium库上对移动应用实现自动化测试
2015/04/17 Python
Python实现程序的单一实例用法分析
2015/06/03 Python
Python利用正则表达式匹配并截取指定子串及去重的方法
2015/07/30 Python
python通过cookie模拟已登录状态的初步研究
2016/11/09 Python
python 随机数使用方法,推导以及字符串,双色球小程序实例
2017/09/12 Python
python查询文件夹下excel的sheet名代码实例
2019/04/02 Python
安装2019Pycharm最新版本的教程详解
2019/10/22 Python
Python中实现输入超时及如何通过变量获取变量名
2020/01/18 Python
iPython pylab模式启动方式
2020/04/24 Python
css3类选择器之结合元素选择器和多类选择器用法
2017/03/09 HTML / CSS
HTML5标签小集
2011/08/02 HTML / CSS
毕业生就业推荐信范文
2013/12/01 职场文书
酒店管理专业毕业生求职自荐信
2014/04/28 职场文书
高中生学习计划书
2014/09/15 职场文书
创先争优个人总结
2015/03/04 职场文书
《祁黄羊》教学反思
2016/02/20 职场文书
解决Jenkins集成SonarQube遇到的报错问题
2021/07/15 Java/Android
基于MySql验证的vsftpd虚拟用户
2021/11/07 MySQL
nginx容器方式反向代理实战
2022/04/18 Servers
使用 DataAnt 监控 Apache APISIX的原理解析
2022/07/07 Servers