1、那是在IE上才会出现的问题,具体是哪个版本的IE来我忘了,当调用parseInt()时,他会先把字符串变成几进制(具体几进制,我忘了)然后在转换成数字,对于纯数字的字符串建议用Number()下面是从网上找的首页 > 学习笔记 > parseInt()方法在IE9中的差异性parseInt()方法在IE9中的差异性对于parseInt()方法,ECMAScript中有这样一条规范请大家一定要注意: ECMAScript规范指出,如果一个字符串以“0”开头(而不是“0x”或“0X”开头),parseInt()可能把它解释为一个八进制数或者一个十进制数。
(资料图)
2、由于这一行为是不确定的,所以不应该使用parseInt()去解析用0开头的数字,除非显示的指定所使用的基数。
3、请看代码:parseInt("050");这句代码在 IE678、火狐、Opera、Safari、Chrome中,均被作为八进制进行解析,所以最终会被解析为40。
4、而在IE9下,是作为十进制来处理的,所以最终的解析结果是50。
5、另外,猜猜下面的代码运行结果都是什么: parseInt("0.12");//0 parseInt(".12");//NaN parseInt("0050");//IE9: 50, IE678+标准浏览器: 40 parseInt("-0050");//IE9: -50, IE678+标准浏览器: -40 parseInt("078");//IE9: 78, IE678+标准浏览器: 7 parseInt("08");//IE9: 8, IE678+标准浏览器: 0 parseFloat("0xFF"); //255总结:如果你真想用parseInt()来解析数字的话,一定要指定第二个参数(基数),这样是最安全的。
6、因为大多数情况下你所解析的数字都是用户输入的,而用户输入080这种东西,我想,很多验证程序都是放过的。
7、所以用parseInt()解析就有可能出现逻辑错误。
8、所以务必要指定基数。
9、例如: parseInt("050", 10); //这里指定被解析数字的基数是十进制。
10、避免了各种浏览器解析不一致的问题。
本文到此分享完毕,希望对大家有所帮助。
X 关闭
Copyright © 2015-2022 人人办公网版权所有 备案号:粤ICP备18023326号-36 联系邮箱:8557298@qq.com