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 得到当前页面高度和宽度的两个函数
Feb 21 Javascript
jquery实现固定顶部导航效果(仿蘑菇街)
Mar 21 Javascript
JS Date函数整理方便使用
Oct 23 Javascript
javascript实现颜色渐变的方法
Oct 30 Javascript
了不起的node.js读书笔记之例程分析
Dec 22 Javascript
将页面table内容与样式另存成excel文件的方法
Aug 05 Javascript
Bootstrap开发实战之第一次接触Bootstrap
Jun 02 Javascript
JavaScript动态检验密码强度的实现方法
Nov 09 Javascript
JavaScript实现Fly Bird小游戏
Dec 15 Javascript
JS使用正则表达式找出最长连续子串长度
Oct 26 Javascript
微信小程序使用template标签实现五星评分功能
Nov 03 Javascript
layui 数据表格+分页+搜索+checkbox+缓存选中项数据的方法
Sep 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数组函数序列之array_keys() - 获取数组键名
2011/10/30 PHP
解决文件名解压后乱码的问题 将文件名进行转码的代码
2012/01/10 PHP
基于php验证码函数的使用示例
2013/05/03 PHP
使用PHP实现蜘蛛访问日志统计
2013/07/05 PHP
php获取本周开始日期和结束日期的方法
2015/03/09 PHP
php连接mysql数据库
2017/03/21 PHP
js中符号转意问题示例探讨
2013/08/19 Javascript
php显示当前文件所在的文件以及文件夹所有文件以树形展开
2013/12/13 Javascript
jquery $.trim()方法使用介绍
2014/05/21 Javascript
通过JS动态创建一个html DOM元素并显示
2014/10/15 Javascript
JQuery中extend的用法实例分析
2015/02/08 Javascript
javascript实现table表格隔行变色的方法
2015/05/13 Javascript
JavaScript继承模式粗探
2016/01/12 Javascript
详解Node.js包的工程目录与NPM包管理器的使用
2016/02/16 Javascript
jquery 动态合并单元格的实现方法
2016/08/26 Javascript
JavaScript数组去重的几种方法效率测试
2016/10/23 Javascript
微信小程序 textarea 组件详解及简单实例
2017/01/10 Javascript
浅析jsopn跨域请求原理及cors(跨域资源共享)的完美解决方法
2017/02/06 Javascript
Node.js+jade抓取博客所有文章生成静态html文件的实例
2017/09/19 Javascript
详解vue+css3做交互特效的方法
2017/11/20 Javascript
微信小程序云开发详细教程
2019/05/16 Javascript
前端使用crypto.js进行加密的函数代码
2020/08/16 Javascript
python在windows下实现ping操作并接收返回信息的方法
2015/03/20 Python
Python的collections模块中namedtuple结构使用示例
2016/07/07 Python
python中的字典使用分享
2016/07/31 Python
python计算二维矩形IOU实例
2020/01/18 Python
小 200 行 Python 代码制作一个换脸程序
2020/05/12 Python
关于css中margin的值和垂直外边距重叠问题
2020/10/27 HTML / CSS
怀旧收藏品和经典纪念品:Betty’s Attic
2018/08/29 全球购物
经济实惠的豪华背包和行李袋:Packs Project
2018/10/17 全球购物
颁奖晚会主持词
2014/03/25 职场文书
孩子教育的心得体会
2014/09/01 职场文书
勿忘国耻9.18演讲稿(经典篇)
2014/09/14 职场文书
导游词之秦始皇兵马俑博物馆
2019/09/29 职场文书
Vue和Flask通信的实现
2021/05/19 Vue.js
解决sql server 数据库,sa用户被锁定的问题
2021/06/11 SQL Server