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的Eval函数
Jul 26 Javascript
javascript arguments使用示例
Dec 16 Javascript
javascript使用btoa和atob来进行Base64转码和解码
Mar 20 Javascript
JS简单判断滚动条的滚动方向实现方法
Apr 28 Javascript
js统计页面上每个标签的数量实例代码
May 29 Javascript
VUE在for循环里面根据内容值动态的加入class值的方法
Aug 12 Javascript
vue实现鼠标移过出现下拉二级菜单功能
Dec 12 Javascript
vue倒计时刷新页面不会从头开始的解决方法
Mar 03 Javascript
功能完善的小程序日历组件的实现
Mar 31 Javascript
Vue 解决父组件跳转子路由后当前导航active样式消失问题
Jul 21 Javascript
JavaScript中时间格式化新思路toLocaleString()
Nov 07 Javascript
js前端设计模式优化50%表单校验代码示例
Jun 21 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个人网站架设连环讲(二)
2006/10/09 PHP
IIS6.0+PHP5.x+MySQL5.x+Zend3.0x+GD+phpMyAdmin2.8x通用安装实例(已经完成)
2006/12/06 PHP
使用PHP导出Word文档的原理和实例
2013/10/21 PHP
提高PHP编程效率的方法
2013/11/07 PHP
采用thinkphp自带方法生成静态html文件详解
2014/06/13 PHP
ThinkPHP查询返回简单字段数组的方法
2014/08/25 PHP
php的api数据接口书写实例(推荐)
2016/09/22 PHP
php使用fputcsv实现大数据的导出操作详解
2020/02/27 PHP
基于jquery实现的一个选择中国大学的弹框 (数据、步骤、代码)
2012/07/26 Javascript
JSONP和批量操作功能的实现方法
2016/08/21 Javascript
浅谈JS中的!=、== 、!==、===的用法和区别
2016/09/24 Javascript
vue页面加载闪烁问题的解决方法
2018/03/28 Javascript
vue3.0 CLI - 2.3 - 组件 home.vue 中学习指令和绑定
2018/09/14 Javascript
微信小程序中this.data与this.setData的区别详解
2018/09/17 Javascript
使用Vue实现简单计算器
2020/02/25 Javascript
跟老齐学Python之用while来循环
2014/10/02 Python
Python实现通过继承覆盖方法示例
2018/07/02 Python
基于Tensorflow批量数据的输入实现方式
2020/02/05 Python
Django多数据库配置及逆向生成model教程
2020/03/28 Python
Python测试框架:pytest学习笔记
2020/10/20 Python
真正了解CSS3背景下的@font face规则
2017/05/04 HTML / CSS
CSS3 制作绽放的莲花采用效果叠加实现
2013/01/31 HTML / CSS
Stylenanda中文站:韩国一线网络服装品牌
2016/12/22 全球购物
世嘉游戏英国官方商店:SEGA Shop UK
2019/09/20 全球购物
什么是虚拟内存?虚拟内存有什么优势?
2012/02/19 面试题
保洁员岗位职责
2015/02/04 职场文书
2015政治思想表现评语
2015/03/25 职场文书
2015年团支书工作总结
2015/04/03 职场文书
《工作是最好的修行》读后感3篇
2019/12/13 职场文书
写一个Python脚本自动爬取Bilibili小视频
2021/04/24 Python
MySQL 常见存储引擎的优劣
2021/06/02 MySQL
python 网络编程要点总结
2021/06/18 Python
Python实战之OpenCV实现猫脸检测
2021/06/26 Python
Python批量解压&压缩文件夹的示例代码
2022/04/04 Python
redis 解决库存并发问题实现数量控制
2022/04/08 Redis
Java8 Stream API 提供了一种高效且易于使用的处理数据的方式
2022/04/13 Java/Android