开发者社区> zhanginzaghi> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

JS编程建议——4:注意JavaScript数据类型的特殊性(4)

简介: 4:注意JavaScript数据类型的特殊性(4)
+关注继续查看

建议4:注意JavaScript数据类型的特殊性(4)
4.避免误用parseInt
parseInt是一个将字符串转换为整数的函数,与parseFloat(将字符串转换为浮点数)对应,这两种函数是JavaScript提供的两种静态函数,用于把非数字的原始值转换为数字。
在开始转换时,parseInt会先查看位置0处的字符,如果该位置不是有效数字,则将返回NaN,不再深入分析。如果位置0处的字符是数字,则将查看位置1处的字符,并重复前面的测试,依此类推,直到发现非数字字符为止,此时parseInt()函数将把前面分析合法的数字字符转换为数值并返回。

  1. parseInt("123abc"); // 123
  2. parseInt("1.73"); // 1
  3. parseInt(".123"); // NaN
    浮点数中的点号对于parseInt来说属于非法字符,因此它不会被转换并返回,这样,在使用parseInt时,就存在潜在的误用风险。例如,我们并不希望parseInt("16")与parseInt("16 tons")产生相同的结果。如果该函数能够提醒我们出现额外文本就好了,但它不会那么做。

对于以0为开头的数字字符串,parseInt()函数会把它作为八进制数字处理,先把它转换为数值,然后再转换为十进制的数字返回。对于以0x开头的数字字符串, parseInt()函数则会把它作为十六进制数字处理,先把它转换为数值,然后再转换为十进制的数字返回。例如:

  1. var d = "010"; //八进制
  2. var e = "0x10"; //十六进制
  3. parseInt(d); //8
  4. parseInt(e); //16
    如果字符串的第一个字符是0,那么该字符串将基于八进制而不是十进制来求值。在八进制中,8和9不是数字,所以parseInt("08")和parseInt("09")的结果为0,这个错误导致了在程序解析日期和时间时经常会出现问题。幸运的是,parseInt可以接受一个基数作为参数,这样parseInt("08",10)结果为8,parseInt("09",10)结果为9。因此,建议读者在使用parseInt时,一定要提供这个基数参数。

通过在parseInt中提供基数参数,可以把二进制、八进制、十六进制等不同进制的数字字符串转换为整数。例如,下面把十六进制数字字符串"123abc"转换为十进制整数。

  1. parseInt("123abc",16); // 1194684
    再如,把二进制、八进制和十进制数字字符串转换为整数:
  2. parseInt("10",2); //把二进制数字10转换为十进制整数为2
  3. parseInt("10",8); //把八进制数字10转换为十进制整数为8
  4. parseInt("10" ,10); //把十进制数字10转换为十进制整数为10

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
JS编程建议——4:注意JavaScript数据类型的特殊性(1)
4:注意JavaScript数据类型的特殊性(1)
1205 0
JS编程建议——4:注意JavaScript数据类型的特殊性(2)
4:注意JavaScript数据类型的特殊性(2)
953 0
JS编程建议——4:注意JavaScript数据类型的特殊性(3)
4:注意JavaScript数据类型的特殊性(3)
1018 0
javascript挑战编程技能-第九题:数据结构
javascript挑战编程技能-第九题:数据结构
10 0
javascript挑战编程技能-第六题:检查密码强度
javascript挑战编程技能-第六题:检查密码强度
36 0
javascript挑战编程技能-第四题:谈个if讲点逻辑
javascript挑战编程技能-第四题:谈个if讲点逻辑
16 0
javascript挑战编程技能-第八题:99乘法表
javascript挑战编程技能-第八题:99乘法表
22 0
js实现页面重定向
在现行的网站应用中URL重定向的应用有很多: 404页面处理、网址改变(t.sina转到weibo.com)、多个网站地址(如:http://www.google.com/ 、www.g.cn )等; 本质上就是将当前使用者的网址从一个网址导向到另外的一个网址上面去; 实现重定向的方式有很多种...
631 0
省市区三级联动,JS实现
文件下载地址:http://files.cnblogs.com/files/chenwolong/jsAddress.rar 示例截图: 在这里自己记录一个方法: function cmbAddOption(cmb, str, obj) { var option = document.
2398 0
js 实现谷歌浏览器中隐藏标签后setInterval事件暂停
Interval_control= setInterval(function(){newsSlide_ChangeImg(-1,'left',start_time);},3000);//设置自动切换函数 window.
761 0
+关注
zhanginzaghi
IT菜鸟
90
文章
25
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载