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 相关文章推荐
onpropertypchange
Jul 01 Javascript
Js基础学习资料
Nov 23 Javascript
如何创建一个JavaScript弹出DIV窗口层的效果
Sep 25 Javascript
JavaScript制作的可折叠弹出式菜单示例
Apr 04 Javascript
js实现鼠标划过给div加透明度的方法
May 25 Javascript
实例讲解jQuery中对事件的命名空间的运用
May 24 Javascript
浅谈JavaScript中面向对象的的深拷贝和浅拷贝
Aug 01 Javascript
vue elementUI 表单校验功能之数组多层嵌套
Jun 04 Javascript
微信JS-SDK实现微信会员卡功能(给用户微信卡包里发送会员卡)
Jul 25 Javascript
基于JavaScript实现贪吃蛇游戏
Mar 16 Javascript
精读《Vue3.0 Function API》
May 20 Javascript
完美解决通过IP地址访问VUE项目的问题
Jul 18 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
一个简单的自动发送邮件系统(一)
2006/10/09 PHP
PHP CURL采集百度搜寻结果图片不显示问题的解决方法
2017/02/03 PHP
PHP删除数组中指定值的元素常用方法实例分析【4种方法】
2018/08/21 PHP
php 根据URL下载远程图片、压缩包、pdf等文件到本地
2019/07/26 PHP
laravel利用中间件做防非法登录和权限控制示例
2019/10/21 PHP
图片连续滚动代码[兼容IE/firefox]
2009/06/11 Javascript
基于Jquery的实现回车键Enter切换焦点
2010/09/14 Javascript
Jquery截取中文字符串的实现代码
2010/12/22 Javascript
Extjs4 消息框去掉关闭按钮(类似Ext.Msg.alert)
2013/04/02 Javascript
JS实现图片翻书效果示例代码
2013/09/09 Javascript
jquery分页插件jpaginate在IE中不兼容问题
2014/04/22 Javascript
JavaScript编写连连看小游戏
2015/07/07 Javascript
jQuery实现的类似淘宝网站搜索框样式代码分享
2015/08/24 Javascript
js贪吃蛇网页版游戏特效代码分享(挑战十关)
2015/08/24 Javascript
详解JavaScript中Hash Map映射结构的实现
2016/05/21 Javascript
超详细的JS弹出窗口代码大全
2020/04/18 Javascript
微信小程序 wxapp内容组件 icon详细介绍
2016/10/31 Javascript
Node.js中用D3.js的方法示例
2017/01/16 Javascript
浅谈Vue.js中的v-on(事件处理)
2017/09/05 Javascript
JavaScript中Array方法你该知道的正确打开方法
2018/09/11 Javascript
JS双向链表实现与使用方法示例(增加一个previous属性实现)
2019/01/31 Javascript
Node.js+Vue脚手架环境搭建的方法步骤
2020/03/08 Javascript
原生JS实现九宫格抽奖
2020/09/13 Javascript
js实现网页随机验证码
2020/10/19 Javascript
pandas中Timestamp类用法详解
2017/12/11 Python
Python3中的json模块使用详解
2018/05/05 Python
python 下载文件的多种方法汇总
2020/11/17 Python
Coggles美国/加拿大:高级国际时装零售商
2018/10/23 全球购物
车间班长岗位职责
2013/11/30 职场文书
员工薪酬激励方案
2014/06/13 职场文书
出国签证在职证明范本
2014/11/24 职场文书
个人股份转让协议书范本
2015/01/28 职场文书
五四青年节活动总结
2015/02/10 职场文书
总账会计岗位职责
2015/04/02 职场文书
宣传委员竞选稿
2015/11/19 职场文书
62句有关感恩节文案(推荐收藏)
2019/11/28 职场文书