javascript教程:实例详解parseInt()
http://www.itjxue.com 2015-08-06 23:50 来源:未知 点击次数:
相信大家都知道parseInt()是做什么的,这里就不啰嗦了。 以前用parseInt()从来都是parseInt(arg) , 记得在某本javascript书上看过,他还可以有第二个参数,不过从来没有用过,直到今天, 我看到两行代码: parseInt("08"); //0 parseInt("08", 10); //8
发现,不理解为什么,于是花了一个小时细细的研究了下,原来parseInt是介样滴~ 当然这里分为两种情况: 一.parseInt(arg)------只带一个参数,第二个参数省略情况 (1) parseInt('12')------此时省略第二个参数时,默认表示十进制,故'12'表示为十进制的 (2) parseInt('012')------'此处虽省略第二个参数,但是'012'是以'0'开头,所以默认为8进制 (3) parseInt('0x12')------'此处虽省略第二个参数,但是'012'是以'0x'开头,所以默认为16进制
二. parseInt(arg1, arg2)------arg1是要操作的数 , arg2是说明arg1是多少进制的数 (1) parseInt('12', 8)-----表示这里'12'是8进制的 (2) parseInt('78',10)-----表示这里'78'是10进制的 (3) parseInt('012',10)-----这里虽说'012'是以开头滴,默认是8进制的,但是第二个参数又强制告诉计算机'012'是一个10进制的数
好啦,知道以上的知识点后,我们再看下面的例子: 1. alert(parseInt('12', 8)); //10 解:将8进制的'12'转换为十进制 :1*8(8的1次幂) + 2*(8的0次幂) = 10;
2. alert(parseInt('012')); //10 解:这里'012'是以'0'开头,所以是8进制的,那8进制的'012'转换为十进制,都同上了,但是这里可能有人觉得,同时它也省略了第二个参数,为什么不是十进制的'012',这里其实我也不知道了,程序测试结果为10,我猜想可能是检测到以'0'开头表示8进制比省略第二个参数默认为10进制的先级高吧,欢迎知道的大侠指点
3. alert(parseInt('012', 8)); // 10 解:次中情况应该很好理解,本身'012'默认就是8进制的,后续第二个参数又强调为8进制
4. alert(parseInt('012', 10)); // 12 解:此种情况'012'默认是8进制,但是第二个参数强制告诉计算机第一个数其实是10进制,所以将'012'当10进制处理结果12
5. alert(parseInt('78',8)); //7 解:表示将8进制的'78'计算parseInt,因为8进制中不可能出现8,所以直接截取第一个数字7进行运算,7*8(8的0次幂)=7
6. alert(parseInt('08',8)); //0 解:这里同第5点
7. alert(parseInt('08',10)); //9 解:这里虽是'08'默认是8进制,但是第二个参数强制为了10进制,所以结果9
8. alert(parseInt('08')); //0 解:这里8进制的'08'只截取'0'操作
9. alert(parseInt('8',8)); //NAN 解:因为8进制中不可能出现8,所以直接NAN
10. alert(parseInt('0x12')); //18 解:这里'0x12'是以'0x'开头,所以默认是16进制,16进制的'12'转换为10进制为18
好啦,这就是我的理解,有什么用词不准确的地方,欢迎拍砖,轻点儿哦