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 相关文章推荐
初学prototype,发个JS接受URL参数的代码
Sep 25 Javascript
JavaScript实现向OL列表内动态添加LI元素的方法
Mar 21 Javascript
jQuery实现防止提交按钮被双击的方法
Mar 24 Javascript
使用JQuery实现智能表单验证功能
Mar 08 Javascript
jquery.form.js框架实现文件上传功能案例解析(springmvc)
May 26 Javascript
js 判断一组日期是否是连续的简单实例
Jul 11 Javascript
vue中各选项及钩子函数执行顺序详解
Aug 25 Javascript
vue发送websocket请求和http post请求的实例代码
Jul 11 Javascript
vue-router跳转时打开新页面的两种方法
Jul 29 Javascript
JavaScript中的类型检查
Feb 03 Javascript
vue 封装 Adminlte3组件的实现
Mar 18 Javascript
Vue循环中多个input绑定指定v-model实例
Aug 31 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中查询SQL Server或Sybase时TEXT字段被截断的解决方法
2009/03/10 PHP
ThinkPHP中自定义目录结构的设置方法
2014/08/15 PHP
PHP中iconv函数转码时截断字符问题的解决方法
2015/01/21 PHP
php将12小时制转换成24小时制的方法
2015/03/31 PHP
Codeigniter的dom类用法实例
2015/06/26 PHP
CI框架实现框架前后端分离的方法详解
2016/12/30 PHP
javascript parseInt() 函数的进制转换注意细节
2013/01/08 Javascript
jQuery旋转插件—rotate支持(ie/Firefox/SafariOpera/Chrome)
2013/01/16 Javascript
Jquery组件easyUi实现手风琴(折叠面板)示例
2016/08/23 Javascript
学习掌握JavaScript中this的使用技巧
2016/08/29 Javascript
浅谈Vue 初始化性能优化
2017/08/31 Javascript
微信小程序中限制激励式视频广告位显示次数(实现思路)
2019/12/06 Javascript
jquery实现烟花效果(面向对象)
2020/03/10 jQuery
JavaScript实现电灯开关小案例
2020/03/30 Javascript
vue实现短信验证码输入框
2020/04/17 Javascript
[01:24:09]Ti4 冒泡赛第二轮DK vs C9 1
2014/07/14 DOTA
Python面向对象编程中的类和对象学习教程
2015/03/30 Python
Python扫描IP段查看指定端口是否开放的方法
2015/06/09 Python
简单介绍Python中的几种数据类型
2016/01/02 Python
Python实现屏幕截图的代码及函数详解
2016/10/01 Python
Python3使用turtle绘制超立方体图形示例
2018/06/19 Python
django 基于中间件实现限制ip频繁访问过程详解
2019/07/30 Python
关于numpy.where()函数 返回值的解释
2019/12/06 Python
TensorFlow 输出checkpoint 中的变量名与变量值方式
2020/02/11 Python
Python脚本如何在bilibili中查找弹幕发送者
2020/06/04 Python
Python操作Word批量生成合同的实现示例
2020/08/28 Python
Python命令行参数定义及需要注意的地方
2020/11/30 Python
Ubuntu16安装Python3.9的实现步骤
2020/12/15 Python
phonegap常用事件总结(必看篇)
2017/03/31 HTML / CSS
阿迪达斯印尼官方网站:adidas印尼
2020/02/10 全球购物
skyn ICELAND官网:冰岛成分天然护肤品
2020/08/24 全球购物
《海底世界》教学反思
2014/04/16 职场文书
预备党员2014年第四季度思想汇报范文
2014/10/25 职场文书
部队2014年终工作总结
2014/11/27 职场文书
病人家属写给医院的感谢信
2015/01/23 职场文书
困难补助申请报告
2015/05/19 职场文书