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对id中含有特殊字符的转义处理示例
Sep 06 Javascript
jQuery前端分页示例分享
Feb 10 Javascript
js跨域请求数据的3种常用的方法
Dec 01 Javascript
jquery获取复选框checkbox的值的简单实现方法
May 26 Javascript
js-FCC算法-No repeats please字符串的全排列(详解)
May 02 Javascript
jQuery中clone()函数实现表单中增加和减少输入项
May 13 jQuery
使用js获取伪元素的content实例
Oct 24 Javascript
bootstrap表格内容过长时用省略号表示的解决方法
Nov 21 Javascript
关于axios不能使用Vue.use()浅析
Jan 12 Javascript
从零开始封装自己的自定义Vue组件
Oct 09 Javascript
如何在node环境实现“get数据解析”代码实例
Jul 03 Javascript
vue实现桌面向网页拖动文件的示例代码(可显示图片/音频/视频)
Mar 01 Vue.js
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树型类实例
2014/12/05 PHP
php的crc32函数使用时需要注意的问题(不然就是坑)
2015/04/21 PHP
基于PHP实现的事件机制实例分析
2015/06/18 PHP
thinkPHP框架实现的短信接口验证码功能示例
2018/06/20 PHP
jQuery学习总结之元素的相对定位和选择器(持续更新)
2011/04/26 Javascript
js 判断文件类型并控制表单提交示例代码
2013/11/14 Javascript
JS获取网页属性包括宽、高等等
2014/04/03 Javascript
jquery序列化表单去除指定元素示例代码
2014/04/10 Javascript
Node.js模块加载详解
2014/08/16 Javascript
JQuery中attr方法和removeAttr方法用法实例
2015/05/18 Javascript
基于jQuery实现的无刷新表格分页实例
2016/02/17 Javascript
jQuery下拉框的简单应用
2016/06/24 Javascript
js放到head中失效的原因与解决方法
2017/03/07 Javascript
ES6新特性之类(Class)和继承(Extends)相关概念与用法分析
2017/05/24 Javascript
Vue.js实现分页查询功能
2020/11/15 Javascript
nodejs 递归拷贝、读取目录下所有文件和目录
2019/07/18 NodeJs
jQuery 筛选器简单操作示例
2019/10/02 jQuery
[01:10:48]完美世界DOTA2联赛PWL S2 GXR vs PXG 第一场 11.18
2020/11/18 DOTA
Python语言技巧之三元运算符使用介绍
2013/03/04 Python
Python多进程库multiprocessing中进程池Pool类的使用详解
2017/11/24 Python
Python3 filecmp模块测试比较文件原理解析
2020/03/23 Python
CSS3之2D与3D变换的实现方法
2019/01/28 HTML / CSS
AmazeUI在模态框中嵌入表单形成模态输入框
2020/08/20 HTML / CSS
AmazeUI 点击元素显示全屏的实现
2020/08/25 HTML / CSS
能源工程专业应届生求职信
2014/03/01 职场文书
少儿节目主持串词
2014/04/02 职场文书
维修工先进事迹
2014/05/29 职场文书
新教师培训方案
2014/06/08 职场文书
初中生旷课检讨书范文
2014/10/06 职场文书
整改落实自查报告
2014/11/05 职场文书
2015年党风廉政承诺书
2015/01/22 职场文书
本溪关门山导游词
2015/02/09 职场文书
车队安全员岗位职责
2015/02/15 职场文书
个人工作年终总结
2015/03/09 职场文书
小学数学教师研修感悟
2015/11/18 职场文书
thinkphp 获取控制器及控制器方法
2021/04/16 PHP