parseInt

发布时间 2023-07-14 09:06:34作者: 青老师

比如parseInt("021",8); // ->17

但是,如果第一个参数如果是Number呢?

比如parseInt(021,8); // ->15

原因:直接把021当成十进制Number来做int解析,发现021是八进制数,变成十进制数是17,再对17按8进制数形式做int解析。即:

parseInt(021,8);-->parseInt(17,8);-->1*8+7=15

parseInt(022,8);-->parseInt(2*8+2,8);-->parseInt(18,8);-->1,18后面的第二个数字8是非法的8进制数码。

parseInt(019,8);-->? 解释:019中,0为前导字符,往后一个一个地取合法八进制数码字符(0-7)来拼接一个合法的完整八进制数。所以拼接01-->parseInt(1,8);-->1。

parseInt(22,8);-->22已经是十进制数了,直接按八进制数解析,结果为:2*8+2=18.

 

类似,请体会:

parseInt("12*3", 10); // 12

parseInt(12*3, 10); // 36