parseInt
比如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