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继承的实现
Oct 24 Javascript
提高 DHTML 页面性能
Dec 25 Javascript
javascript实现图片切换的幻灯片效果源代码
Dec 12 Javascript
JS获取IP、MAC和主机名的五种方法
Nov 14 Javascript
JQuery中使用Ajax赋值给全局变量异常的解决方法
Jan 10 Javascript
jQuery日程管理插件fullcalendar使用详解
Jan 07 Javascript
element-ui 中的table的列隐藏问题解决
Aug 24 Javascript
在 Angular-cli 中使用 simple-mock 实现前端开发 API Mock 接口数据模拟功能的方法
Nov 28 Javascript
深入理解使用Vue实现Context-Menu的思考与总结
Mar 09 Javascript
解决vue-router路由拦截造成死循环问题
Aug 05 Javascript
React列表栏及购物车组件使用详解
Jun 28 Javascript
react中的DOM操作实现
Jun 30 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中使用break跳出多重循环代码实例
2015/01/21 PHP
laravel 5.3中自定义加密服务的方案详解
2017/05/09 PHP
PHP实现基于状态的责任链审批模式详解
2019/05/31 PHP
JQuery读取XML文件数据并显示的实现代码
2009/12/16 Javascript
别了 JavaScript中的isXX系列
2012/08/01 Javascript
jquery选择器的选择使用及性能介绍
2013/01/16 Javascript
js判断背景图片是否加载成功使用img的width实现
2013/05/29 Javascript
js取值中form.all和不加all的区别介绍
2014/01/20 Javascript
详解jquery中$.ajax方法提交表单
2014/11/03 Javascript
基于JavaScript将表单序列化类型的数据转化成对象的处理(允许对象中包含对象)
2015/12/28 Javascript
JavaScript实现Java中Map容器的方法
2016/10/09 Javascript
BootStrap中关于Select下拉框选择触发事件及扩展
2016/11/22 Javascript
在页面中引入js的两种方法(推荐)
2017/08/29 Javascript
解决vue单页路由跳转后scrollTop的问题
2018/09/03 Javascript
ES6的Fetch异步请求的实现方法
2018/12/07 Javascript
JS隐藏号码中间4位代码实例
2019/04/09 Javascript
小程序绑定用户方案优化小结
2019/05/15 Javascript
IE浏览器下JS脚本提交表单后,不能自动提示问题解决方法
2019/06/04 Javascript
Node.js在图片模板上生成二维码图片并附带底部文字说明实现详解
2019/08/07 Javascript
react-native聊天室|RN版聊天App仿微信实例|RN仿微信界面
2019/11/12 Javascript
python Django批量导入数据
2016/03/25 Python
pandas修改DataFrame列名的方法
2018/04/08 Python
解决win64 Python下安装PIL出错问题(图解)
2018/09/03 Python
浅谈Python类中的self到底是干啥的
2019/11/11 Python
PyTorch中topk函数的用法详解
2020/01/02 Python
pycharm的python_stubs问题
2020/04/08 Python
基于Python实现视频的人脸融合功能
2020/06/12 Python
Python基于unittest实现测试用例执行
2020/11/25 Python
18-35岁旅游团的全球领导者:Contiki
2017/02/08 全球购物
应届生简历中的自我评价
2014/01/13 职场文书
大学毕业自我鉴定范文
2014/02/03 职场文书
秋天的图画教学反思
2014/05/01 职场文书
毕业横幅标语
2014/10/08 职场文书
2015年机械设备管理工作总结
2015/05/04 职场文书
酒吧七夕情人节宣传语
2015/11/24 职场文书
python装饰器代码解析
2022/03/23 Python