• 修改下标题,这个应该属于parseInt带来的坑,而不是map函数的坑(来看看map函数是怎么坑像我这样的小白的,如果我理解有错的地方欢迎大神们指出,接收各种吐槽,我喜欢在被吐槽中成长)


    ok,我们首先来看个列子,这个问题是从某群某大神发出来的,当时我不知道是为什么,乍一看我也萌了,后来群友一说瞬间明白了,

    //    很简单的一行代码,结果却不是你想象的那样子
    [1,1,1,1,1].map(parseInt)
    
    //    [1, NaN, 1, 1, 1]

    解释:

      大家都知道数组的map函数是返回一个新的数组,在这个例子里面很显然的想返回的是和数组一样的一个新数组,那么为什么返回的新数组第二个元素是NaN呢?

      要弄清这个问题就要考虑两个问题

      1.map接受接收一个函数作为参数,函数接受两个参数,一个是数组本身的值,另外一个是数组下标,好了,那么我们现在重新真理之后还原例子中的代码

    [1,1,1,1,1].map(function (value,index) {
        return parseInt(value,index)
    });
    //    [1, NaN, 1, 1, 1]

      2.parseInt也是接受两个参数滴,只是第二个参数是可选的,它会根据你传入的值来进行转换,比如说

    1 //    看第一个数组元素传入的值是parseInt(1,0),那么注意如果省略第二个参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数
    2 parseInt(1,0);
    3 
    4 //    结果实1
    5 
    6 //    看第二个parseInt(1,1),问题就是在这里,第二个参数它只接受2~36之间的数值,如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。
    7 parseInt(1,1);
    8 
    9 //    NaN
  • 相关阅读:
    多态的使用
    抽象类与具体类
    对象应该长什么样子
    方法的重载overload
    遵守合约:覆盖的规则
    Android 自定义Dialog
    less 之Extend 及 Extend all用法
    github常见错误整理!
    js获取元素宽高
    解决 Error: Access denied for user 'root'@'localhost' (using password: YES)
  • 原文地址:https://www.cnblogs.com/chuangyidai/p/5586655.html
Copyright © 2020-2023  润新知