十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
好程序员web前端培训分享关于parseInt函数的一切 , 关于JS的手动类型转换,parseInt是我们最早接触的函数之一。
专业从事网站制作、网站建设,高端网站制作设计,小程序设计,网站推广的成都做网站的公司。优秀技术团队竭力真诚服务,采用HTML5建站+CSS3前端渲染技术,响应式网站设计,让网站在手机、平板、PC、微信下都能呈现。建站过程建立专项小组,与您实时在线互动,随时提供解决方案,畅聊想法和感受。
接下来我们详细的总结一下它的用法,你可以点击收藏,以备不时之需。
parseInt()
作用 是将参数(通常为字符串)强制转换为整数。
它有两个参数,第二个可以省略,我们先展示常见的用法
1. 转换规则: 依次将字符串中从左到右的数字部分转为整数,一旦转换失败,返回NaN。
(1) 参数是字符串类型:
var a = parseInt ( ‘ 10 ’ ); //将字符串转成整数类型 console.log(a); // 10 var b = parrseInt( ‘ 10 true ’ ); //将有效数字部分转为整数,提取开头数字部分 console.log(b); // 10 var c = parseInt ( ‘ 10 true20 ’ ); //只将开头有效部分转为整数 console.log(c); //10 var d = parseInt ( ‘ 045 zoo ’ ); //开头部分转为整数,数字前面的0省略 console.log(d); //45 var f = parseInt ( ‘ 34.5 ’ ); //整数部分,小数点非数字部分,舍去 console.log(f); //34 var g = parseInt ( ‘ a3 ’ ); //若不是以数字开头,转为NaN(Not a Number 不是数字)的特殊数值 console.log(g); //NaN
(2) 参数是数字类型:
var a = parseInt ( 3.4 ); //依然转为数字,但是取整 console.log(a); //3
(3) 其它数据类型:只要开头不包含有效数字,结果都转为NaN
var a = parseInt ( true );
console.log(a); //NaN
var b = parseInt ( null );
console.log(b); //NaN
var c = parseInt ( undefined );
console.log(c); //NaN
var d = parseInt ([]);
console.log(d); //NaN
var e = parseInt ({});
console.log(e); //NaN
接下来,我们看第二个参数的用法
第二个参数:表示进制,范围2~36(用来说明第一个参数的进制规则)
var a = parseInt ( ‘ 99 ’ , 10 ); // 如果字符串为十进制内容,该参数可省略 console.log(a); // 99
var a = parseInt ( ‘ 1001 ’ , 2 ); // ‘1001’ 符合二进制规则, 转为十进制整数 console.log(a); // 9
var a = parseInt ( ‘ 1001 ’ , 10 ); // ‘1001’同样符合十进制, 转为十进制整数 console.log(a); // 1001
var b = parseInt ( ‘ 234 ’ , 2 ); //‘234’不符合二进制的规则 console.log(b); // NaN
var b = parseInt ( ‘ abcde ’ , 2 ); //‘abcde’不符合二进制的规则 console.log(b); // NaN
var c = parseInt ( ‘ 1022 ’ , 2 ); //‘10’部分属于二进制,但‘22’不是,将开头有效的部分提取并转成十进制 console.log(c); //2
如果以0x或0X开头,即使不说明进制规则,也能识别
var e = parrseInt( ‘ 0xa ’ ); //0x是十六进制的表示方法,a是十六进制中的10,转换成整数后自动切换为十进制 console.log(e); //10
尽量不使用出现e的数字,由于只能识别开头部分,会造成结果混乱 此时应使用parseFloat方法替代
parseInt ( "6.022e23" , 10 ); // 返回 6 parseInt ( 6.022e2 , 10 ); // 返回 602
非常大或非常小的数字
parseInt ( 4.7 * 1 e22, 10 ); // 非常大的数值变成 4 parseInt ( 0.00000000000434 , 10 ); // 非常小的数值变成 4
在最新的ES5规范中,以0开头的数字,已经不能再被识别为八进制了。
parseInt ( "011" ); //会当成10进制转换为 11 parseInt ( "011" , 8 ) //指定了8进制,结果为 9
总结:
以上测试均来自最新版的chrome浏览器,并不能确保所有浏览器行为一致。为了保证开发中不出现意外, 建议使用parseInt方法时,一律带上第二个参数 !