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对象模型-执行模型
Apr 28 Javascript
JavaScript Date对象 日期获取函数
Dec 19 Javascript
提升你网站水平的jQuery插件集合推荐
Apr 19 Javascript
jQuery.parseJSON(json)将JSON字符串转换成js对象
Jul 27 Javascript
Bootstrap与KnockoutJs相结合实现分页效果实例详解
May 03 Javascript
webpack+vue.js实现组件化详解
Oct 12 Javascript
从零开始做一个pagination分页组件
Mar 15 Javascript
关于Vue.nextTick()的正确使用方法浅析
Aug 25 Javascript
浅谈vue路径优化之resolve
Oct 13 Javascript
轻量级富文本编辑器wangEditor结合vue使用方法示例
Oct 10 Javascript
js实现无缝滚动双图切换效果
Jul 09 Javascript
世界上最短的数字判断js代码
Sep 09 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的ob_start();控制您的浏览器cache!
2006/11/25 PHP
PHP 写文本日志实现代码
2010/05/18 PHP
PHP+jQuery实现自动补全功能源码
2013/05/15 PHP
php简单实现查询数据库返回json数据
2015/04/16 PHP
PHP CURL中传递cookie的方法步骤
2019/05/09 PHP
Using the TextRange Object
2006/10/14 Javascript
js 自定义个性下拉选择框示例
2013/08/20 Javascript
JavaScript 事件绑定及深入
2015/04/13 Javascript
jQuery图片特效插件Revealing实现拉伸放大
2015/04/22 Javascript
JS实现霓虹灯文字效果的方法
2015/08/06 Javascript
浅谈jQuery中的checkbox问题
2016/08/10 Javascript
Vuejs第八篇之Vuejs组件的定义实例解析
2016/09/05 Javascript
浅谈javascript:两种注释,声明变量,定义函数
2016/10/05 Javascript
简单理解vue中el、template、replace元素
2016/10/27 Javascript
JavaScript自定义函数实现查找两个字符串最长公共子串的方法
2016/11/24 Javascript
关于axios返回空对象的问题解决
2017/04/04 Javascript
基于jquery的on和click的区别详解
2018/01/15 jQuery
es6 filter() 数组过滤方法总结
2019/04/03 Javascript
如何自动化部署项目?折腾服务器之旅~
2019/04/16 Javascript
vue实现百度搜索功能
2020/12/28 Javascript
python getopt详解及简单实例
2016/12/30 Python
利用python爬取软考试题之ip自动代理
2017/03/28 Python
Python基于递归实现电话号码映射功能示例
2018/04/13 Python
django的分页器Paginator 从django中导入类
2019/07/25 Python
python实现输入的数据在地图上生成热力图效果
2019/12/06 Python
使用pickle存储数据dump 和 load实例讲解
2019/12/30 Python
python无序链表删除重复项的方法
2020/01/17 Python
Django 实现 Websocket 广播、点对点发送消息的代码
2020/06/03 Python
详解Python中的路径问题
2020/09/02 Python
HTML5标签大全
2016/11/23 HTML / CSS
潘多拉珠宝俄罗斯官方网上商店:PANDORA俄罗斯
2020/09/22 全球购物
大学校园生活自我鉴定
2014/01/13 职场文书
初中班级口号
2014/06/09 职场文书
我的中国梦心得体会范文
2016/01/05 职场文书
解决vue $http的get和post请求跨域问题
2021/06/07 Vue.js
Nginx图片服务器配置之后图片访问404的问题解决
2022/03/21 Servers