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 相关文章推荐
解析Javascript中难以理解的11个问题
Dec 09 Javascript
AngularJS入门教程之学习环境搭建
Dec 06 Javascript
详解Document.Cookie
Dec 25 Javascript
js微信支付实现代码
Dec 22 Javascript
vue拦截器Vue.http.interceptors.push使用详解
Apr 22 Javascript
一次围绕setTimeout的前端面试经验分享
Jun 15 Javascript
Vue Spa切换页面时更改标题的实例代码
Jul 15 Javascript
jQuery实现动画、消失、显现、渐出、渐入效果示例
Sep 06 jQuery
Node.js net模块功能及事件监听用法分析
Jan 05 Javascript
JavaScript中十种一步拷贝数组的方法实例详解
Apr 22 Javascript
JavaScript实现英语单词题库
Dec 24 Javascript
javascript将扁平的数据转为树形结构的高效率算法
Feb 27 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递归实现无限分类生成下拉列表的函数
2010/08/08 PHP
利用yahoo汇率接口实现实时汇率转换示例 汇率转换器
2014/01/14 PHP
php汉字转拼音的示例
2014/02/27 PHP
php输出反斜杠的实例方法
2019/09/19 PHP
页面调用单个swf文件,嵌套出多个方法。
2011/11/21 Javascript
node.js中的fs.readSync方法使用说明
2014/12/17 Javascript
js实现表单Radio切换效果的方法
2015/08/17 Javascript
jquery判断密码强度的验证代码
2020/04/22 Javascript
浅析jQuery Mobile的初始化事件
2015/12/03 Javascript
js实现html table 行,列锁定的简单实例
2016/10/13 Javascript
JS仿Base.js实现的继承示例
2017/04/07 Javascript
React-Native中禁用Navigator手势返回的示例代码
2017/09/09 Javascript
JavaScript的setter与getter方法
2017/11/29 Javascript
微信小程序自定义可滑动日历界面
2018/12/28 Javascript
在vue项目中引入highcharts图表的方法
2019/01/21 Javascript
jQuery中实现text()的方法
2019/04/04 jQuery
[02:00]DOTA2英雄COSPLAY闹市街头巡游助威2015国际邀请赛
2015/08/02 DOTA
使用 Python 获取 Linux 系统信息的代码
2014/07/13 Python
关于反爬虫的一些简单总结
2017/12/13 Python
python读取和保存视频文件
2018/04/16 Python
pandas apply 函数 实现多进程的示例讲解
2018/04/20 Python
Selenium定位元素操作示例
2018/08/10 Python
Python的条件表达式和lambda表达式实例
2019/01/31 Python
Python2和Python3的共存和切换使用
2019/04/12 Python
浅谈python3 构造函数和析构函数
2020/03/12 Python
python批量合成bilibili的m4s缓存文件为MP4格式 ver2.5
2020/12/01 Python
纯css3制作的火影忍者写轮眼开眼至轮回眼及进化过程实例
2014/11/11 HTML / CSS
英国电器零售商:PRC Direct
2018/06/21 全球购物
娇韵诗法国官网:Clarins法国
2019/01/29 全球购物
西班牙用户之间买卖视频游戏的平台:Wakkap
2020/03/21 全球购物
公司营业员的自我评价
2014/03/04 职场文书
推荐信怎么写
2014/05/09 职场文书
党员干部对十八届四中全会的期盼
2014/10/17 职场文书
政风行风建设整改方案
2014/10/27 职场文书
统计员岗位职责
2015/02/11 职场文书
JavaScript获取URL参数的方法分享
2022/04/07 Javascript