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 相关文章推荐
JS在IE和FF下attachEvent,addEventListener学习笔记
Nov 26 Javascript
复选框全选与全不选操作实现思路
Aug 18 Javascript
原生js做的手风琴效果的导航菜单
Nov 08 Javascript
JS实现动态生成表格并提交表格数据向后端
Nov 25 Javascript
jQuery双向列表选择器DIV模拟版
Nov 01 Javascript
深入理解Javascript中的观察者模式
Feb 20 Javascript
jQuery+ThinkPHP+Ajax实现即时消息提醒功能实例代码
Mar 21 jQuery
Express + Node.js实现登录拦截器的实例代码
Jul 01 Javascript
vue多页面开发和打包正确处理方法
Apr 20 Javascript
浅谈高大上的微信小程序中渲染html内容—技术分享
Oct 25 Javascript
Vue组件间通信 Vuex的用法解析
Aug 05 Javascript
详解uniapp的全局变量实现方式
Jan 11 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
APMServ使用说明
2006/10/23 PHP
解析mysql中UNIX_TIMESTAMP()函数与php中time()函数的区别
2013/06/24 PHP
改写函数实现PHP二维/三维数组转字符串
2013/09/13 PHP
Codeigniter整合Tank Auth权限类库详解
2014/06/12 PHP
PHP编程中的常见漏洞和代码实例
2014/08/06 PHP
Laravel实现搜索的时候分页并携带参数
2019/10/15 PHP
关于图片验证码设计的思考
2007/01/29 Javascript
面向对象的javascript(笔记)
2009/10/06 Javascript
最常用的12种设计模式小结
2011/08/09 Javascript
JQuery入门——用映射方式绑定不同事件应用示例
2013/02/05 Javascript
浅析jquery的作用与优势
2013/12/02 Javascript
avalonjs实现仿微博的图片拖动特效
2015/05/06 Javascript
JS实现的论坛Ajax打分效果完整实例
2015/10/31 Javascript
让图片跳跃起来  javascript图片轮播特效
2016/02/16 Javascript
jquery ajax后台返回list,前台用jquery遍历list的实现
2016/10/30 Javascript
Jquery循环截取字符串的方法(多出的字符串处理成&quot;...&quot;)
2016/11/28 Javascript
angularjs2中父子组件的数据传递的实例代码
2017/07/05 Javascript
JavaScript实现元素滚动条到达一定位置循环追加内容
2017/12/28 Javascript
详细教你微信公众号正文页SVG交互开发技巧
2019/07/25 Javascript
浅谈TypeScript的类型保护机制
2020/02/23 Javascript
[24:42]VP vs TNC Supermajor小组赛B组 BO3 第三场 6.2
2018/06/03 DOTA
Python的Django框架中settings文件的部署建议
2015/05/30 Python
python去掉行尾的换行符方法
2017/01/04 Python
详解Python3注释知识点
2019/02/19 Python
pygame实现非图片按钮效果
2019/10/29 Python
PyQt中使用QtSql连接MySql数据库的方法
2020/07/28 Python
pytorch下的unsqueeze和squeeze的用法说明
2021/02/06 Python
ONLY瑞典官网:世界知名服装品牌
2018/06/19 全球购物
新媒传信软件测试面试题
2013/02/24 面试题
大一军训感言
2014/01/09 职场文书
药品促销活动方案
2014/02/14 职场文书
公司董事长助理工作职责
2014/07/12 职场文书
小学运动会报道稿
2014/10/04 职场文书
2014年初一班主任工作总结
2014/11/08 职场文书
调任通知
2015/04/21 职场文书
MongoDB数据库的安装步骤
2021/06/18 MongoDB