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 相关文章推荐
类似天猫商品详情随浏览器移动的示例代码
Feb 27 Javascript
jQuery简单实现仿京东商城的左侧菜单效果代码
Sep 09 Javascript
一次$.getJSON不执行的简单记录
Jul 19 Javascript
微信小程序 生命周期详解
Oct 12 Javascript
Angular项目中$scope.$apply()方法的使用详解
Jul 26 Javascript
微信小程序自定义对话框弹出和隐藏动画
Jul 19 Javascript
vue-router 手势滑动触发返回功能
Sep 30 Javascript
elementUI vue this.$confirm 和el-dialog 弹出框 移动 示例demo
Jul 03 Javascript
vue 使用axios 数据请求第三方插件的使用教程详解
Jul 05 Javascript
jQuery利用cookie 实现本地收藏功能(不重复无需多次命名)
Nov 07 jQuery
Vue开发中遇到的跨域问题及解决方法
Feb 11 Javascript
原生javascript如何实现共享onload事件
Jul 03 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
基于OpenCV的PHP图像人脸识别技术
2009/10/11 PHP
php JWT在web端中的使用方法教程
2018/09/06 PHP
JS如何判断移动端访问设备并解析对应CSS
2013/11/27 Javascript
JavaScript将数组转换成CSV格式的方法
2015/03/19 Javascript
jquery判断复选框是否选中进行答题提示特效
2015/12/10 Javascript
JavaScript中字符串与Unicode编码互相转换的实现方法
2015/12/18 Javascript
javascript动态获取登录时间和在线时长
2016/02/25 Javascript
jQuery实现简洁的轮播图效果实例
2016/09/07 Javascript
解析如何利用iframe标签以及js制作时钟
2016/12/08 Javascript
使用vue.js实现checkbox的全选和多个的删除功能
2017/02/17 Javascript
JavaScript中的FileReader图片预览上传功能实现代码
2017/07/24 Javascript
javascript连接mysql与php通过odbc连接任意数据库的实例
2017/12/27 Javascript
jquery动态添加以及遍历option并获取特定样式名称的option方法
2018/01/29 jQuery
vue请求数据的三种方式
2020/03/04 Javascript
vue实现移动端返回顶部
2020/10/12 Javascript
Python利用flask sqlalchemy实现分页效果
2020/08/02 Python
Python 加密的实例详解
2017/10/09 Python
python实现百万答题自动百度搜索答案
2018/01/16 Python
TensorFlow平台下Python实现神经网络
2018/03/10 Python
深入浅析python with语句简介
2018/04/11 Python
在Pycharm中使用GitHub的方法步骤
2019/06/13 Python
django-初始配置(纯手写)详解
2019/07/30 Python
CSS3使用多列制作瀑布流
2016/05/10 HTML / CSS
通信工程毕业生求职信
2013/11/16 职场文书
会计专业毕业生求职信分享
2014/01/03 职场文书
企业标语大全
2014/07/01 职场文书
人事专员岗位说明书
2014/07/29 职场文书
优秀三好学生事迹材料
2014/08/31 职场文书
工作失误检讨书范文
2015/01/26 职场文书
三潭印月的导游词
2015/02/12 职场文书
2015年出纳个人工作总结
2015/04/02 职场文书
2015年青年志愿者协会工作总结
2015/04/27 职场文书
2016年社区党支部公开承诺书
2016/03/25 职场文书
六年级上册《闻官军收河南河北》的教学设计
2019/11/15 职场文书
处理canvas绘制图片模糊问题
2022/05/11 Javascript
Django框架模板用法详解
2022/06/10 Python