关于 ["1", "2", "3"].map(parseInt) 为什么返回 [1,NaN,NaN]?

console.log(["1", "2", "3"].map(parseInt));

为什么没有返回[1,2,3]返回的却是[1,NaN,NaN]?

我们先单独看看map里面运行会有哪些数据

    var a = ["1","2","3"];
    a.map(function (value,index) {
        console.log("value:",value,"index:",index);
    });

结果

在说说parseInt

    var b = "123";
    console.log(parseInt(b));

结果当然是数字123,平时是这么用得多吧?然而它居然有第二个参数,所以我在上面打印出了index的值

下面是w3c对parseInt的解释

关于 [

我们换一种方式看["1", "2", "3"].map(parseInt)

    var a = [];
    a.push(parseInt("1",0));
    a.push(parseInt("2",1));
    a.push(parseInt("3",2));
    console.log(a);

结果

第一次:parseInt("1",0)    //第二参数为0相当于默认的方法,所以得到了1

第二次:parseInt("2",1)    //由于第二参数为1小于2了,所以得到了NaN

第三次:parseInt("3",2)    //虽然第二参数2符合条件,但是参数一3并不能当成二进制解释,所以得到了NaN

你可能感兴趣的:(JavaScript)