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 相关文章推荐
[HTML/CSS/Javascript]WWTJS
Sep 25 Javascript
JS+CSS制作DIV层可(最小化/拖拽/排序)功能实现代码
Feb 25 Javascript
JavaScript对象创建及继承原理实例解剖
Feb 28 Javascript
jquery弹出框的用法示例(一)
Aug 26 Javascript
Javascript中this的用法详解
Sep 22 Javascript
JavaScript常用脚本汇总(三)
Mar 04 Javascript
js改变embed标签src值的方法
Apr 10 Javascript
jQuery拖拽插件gridster使用指南
Apr 21 Javascript
JavaScript中日期函数的相关操作知识
Aug 03 Javascript
ng-repeat指令在迭代对象时的去重方法
Oct 02 Javascript
jquery实现垂直无限轮播的方法分析
Jul 16 jQuery
vscode调试node.js的实现方法
Mar 22 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日期处理函数 整型日期格式
2011/01/12 PHP
PHP中return 和 exit 、break和contiue 区别与用法
2012/04/09 PHP
基于php上传图片重命名的6种解决方法的详细介绍
2013/04/28 PHP
PHP return语句另类用法不止是在函数中
2014/09/17 PHP
php获取数组元素中头一个数组元素值的实现方法
2014/12/20 PHP
PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function
2017/02/05 PHP
PHP从尾到头打印链表实例讲解
2018/09/27 PHP
PHP实现字符串大小写转函数的功能实例
2019/02/06 PHP
使用SyntaxHighlighter实现HTML高亮显示代码的方法
2010/02/04 Javascript
js实现浏览器的各种菜单命令比如打印、查看源文件等等
2013/10/24 Javascript
JavaScript 获取任一float型小数点后两位的小数
2014/06/30 Javascript
jQuery插件MixItUp实现动画过滤和排序
2015/04/12 Javascript
分享JavaScript与Java中MD5使用两个例子
2015/12/23 Javascript
使用jQuery Rotare实现微信大转盘抽奖功能
2016/06/20 Javascript
javascript简单实现跟随滚动条漂浮的返回顶部按钮效果
2016/08/19 Javascript
jquery实现ajax提交表单信息的简单方法(推荐)
2016/08/24 Javascript
node.js利用redis数据库缓存数据的方法
2017/03/01 Javascript
Gulp实现静态网页模块化的方法详解
2018/01/09 Javascript
微信小程序如何实现五星评价功能
2019/10/15 Javascript
vue中get请求如何传递数组参数的方法示例
2019/11/08 Javascript
vue自定义树状结构图的实现方法
2020/10/18 Javascript
Ant design vue中的联动选择取消操作
2020/10/31 Javascript
python的unittest测试类代码实例
2017/12/07 Python
python缩进长度是否统一
2020/08/02 Python
Html5自定义字体解决方法
2019/10/09 HTML / CSS
HTML5在手机端实现视频全屏展示方法
2020/11/23 HTML / CSS
Spartoo美国:欧洲排名第一的在线时装零售商
2019/12/12 全球购物
Habitat家居英国官方网站:沙发、家具、照明、厨房和户外
2019/12/12 全球购物
What's the difference between an interface and abstract class? (接口与抽象类有什么区别)
2012/10/29 面试题
环境工程大学生自荐信
2013/10/21 职场文书
班班通校本培训方案
2014/03/12 职场文书
研究生考核个人自我鉴定
2014/03/27 职场文书
2014领导干部四风问题查摆思想汇报
2014/09/13 职场文书
药品开票员岗位职责
2015/04/15 职场文书
2015年国庆晚会主持词
2015/07/01 职场文书
《悬崖边的树》读后感2篇
2019/12/02 职场文书