1/0结果为Infinity,因为在19进制中,I代表18,但是n无法解析,因此parseInt(Infinity,19)为18。

    注意另外一个问题:[1,2,3].map(parseInt)为什么等于[1,NAN,NAN]

    首先map中的parseInt相当于以下写法:

    1. [1,2,3].map(function(){
    2.     return parseInt.apply(this,arguments);
    3. });

    parseInt会将map中的参数带入,有三个参数,value,index,array,也就是说会变成parseInt(1,0),parseInt(2,1),parseInt(3,2)

    这里注意parseInt(string,radix)中的第二个参数,如果这个参数为0或者没有,则按照10进制解析;其次第二个参数的范围为2-36,其他进制的都是返回NAN。

    因此parseInt(1,0)为1,因为按照十进制返回;parseInt(2,1)放回NAN,因为第二个参数范围为2-36;parseInt(3,2)范围NAN,因为二进制里面只包含0和1,没有3的。

    回到顶部
    我要评论

    所有评论

      相关文章