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实现漂亮的二级下拉菜单代码
Aug 26 Javascript
jQuery实现ctrl+enter(回车)提交表单
Oct 19 Javascript
JavaScript学习笔记之检测客户端类型是(引擎、浏览器、平台、操作系统、移动设备)
Dec 03 Javascript
Javascript类型系统之String字符串类型详解
Jun 21 Javascript
vue中SPA单页面应用程序详解
Nov 07 Javascript
vue项目总结之文件夹结构配置详解
Dec 13 Javascript
详解VUE自定义组件中用.sync修饰符与v-model的区别
Jun 26 Javascript
vue-cli 打包后提交到线上出现 &quot;Uncaught SyntaxError:Unexpected token&quot; 报错
Nov 06 Javascript
javascript中call()、apply()的区别
Mar 21 Javascript
js实现弹出框的拖拽效果实例代码详解
Apr 16 Javascript
vue实现将数据存入vuex中以及从vuex中取出数据
Nov 08 Javascript
JS时间戳与日期格式互相转换的简单方法示例
Jan 30 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绝对路径与相对路径之间关系的的分析
2010/03/03 PHP
PHP命名空间(namespace)的使用基础及示例
2014/08/18 PHP
php计算到指定日期还有多少天的方法
2015/04/14 PHP
php中this关键字用法分析
2016/12/07 PHP
php字符串截取函数mb_substr用法实例分析
2019/06/25 PHP
javascript Split方法,indexOf方法、lastIndexOf 方法和substring 方法
2009/03/21 Javascript
一个JQuery操作Table的代码分享
2012/03/30 Javascript
javascript解决innerText浏览器兼容问题思路代码
2013/05/17 Javascript
js 操作select与option(示例讲解)
2013/12/20 Javascript
Nodejs sublime text 3安装与配置
2014/06/19 NodeJs
10个很棒的jQuery代码片段
2015/09/24 Javascript
分享12个非常实用的JavaScript小技巧
2016/05/11 Javascript
JavaScript String(字符串)对象的简单实例(推荐)
2016/08/31 Javascript
手把手教你用Node.js爬虫爬取网站数据的方法
2018/07/05 Javascript
Vux+Axios拦截器增加loading的问题及实现方法
2018/11/08 Javascript
element ui分页多选,翻页记忆的实例
2019/09/03 Javascript
vue 自动化路由实现代码
2019/09/03 Javascript
layer页面跳转,获取html子节点元素的值方法
2019/09/27 Javascript
浅谈实现在线预览PDF的几种解决办法
2020/08/10 Javascript
js实现手表表盘时钟与圆周运动
2020/09/18 Javascript
[51:53]完美世界DOTA2联赛循环赛 LBZS vs DM BO2第二场 11.01
2020/11/02 DOTA
Python随机生成一个6位的验证码代码分享
2015/03/24 Python
Python中文分词实现方法(安装pymmseg)
2016/06/14 Python
快速入门python学习笔记
2017/12/06 Python
python读写csv文件方法详细总结
2019/07/05 Python
Python timer定时器两种常用方法解析
2020/01/20 Python
python 安装教程之Pycharm安装及配置字体主题,换行,自动更新
2020/03/13 Python
python tkinter的消息框模块(messagebox,simpledialog)
2020/11/07 Python
python实现控制台输出颜色
2021/03/02 Python
南非最大的花卉和送礼服务:NetFlorist
2017/09/13 全球购物
世界上获奖最多的手机镜头:Olloclip
2018/03/03 全球购物
MATCHESFASHION澳大利亚/亚太地区:英国时尚奢侈品电商
2020/01/14 全球购物
贵阳市党的群众路线教育实践活动党(工)委领导班子整改方案
2014/10/26 职场文书
优秀员工演讲稿
2019/06/21 职场文书
JavaScript中的LHS和RHS分析详情
2022/04/06 Javascript
python数字图像处理之对比度与亮度调整示例
2022/06/28 Python