开门见山,我们先来看两个例子。

var arr=['1','4','9','16'];

var r=arr.map(Math.sqrt);

猜猜r的结果会是多少?

没错就是

[1,2,3,4]

我们再来试试另一个,

var arr=['1','4','9','16'];

var r=arr.map(parseInt);

再猜猜结果是多少?

是[1,4,9,16]?

console试一试看看结果是多少

[1,NaN,NaN,1]!

是不是大吃一惊

其实真相————

就是参数个数搞的鬼!

让我们再来看一个例子

var arr=['1','4','9','16'];

var r=arr.map(function(x){return parseInt(x)});

r//[1,4,9,16]

结果是不是就正常了!

其实在调用

arr.map(parseInt);的时候

传给map的参数有三个

当前的值(currentValuve)//依次是'1','4','9','16'

当前值的索引(currentIndex)//依次是0,1,2,3

以及当前数组(currentArray)//['1','4','9','16'],每次都是这个

而每次使用parseInt()函数的时候,却只传入了两个值(currentValue,currentIndex)

所以结果就是:

parseInt('1',0)//1

而第二个参数假如经过 Number 函数转换后为 0 或 NaN,则将会忽略。——Mozilla官方文档

parseInt('4',1)//非法,NaN

parseInt('9',2)//非法,NaN

parseInt('16',3)//这里值得注意,在解析字符串'16'的时候,发现6大于或等于3,所以其后的数字都被忽略,只剩下一个1返回了

如果 parseInt 遇到了不属于radix参数所指定的基数中的字符那么该字符和其后的字符都将被忽略。——Mozilla官方文档

最后知道真相的我们以后可千万得注意map函数中回调参数个数的问题啊!

var r=arr.map(function(x){return parseInt(x)});

关于Array的map方法中回调函数参数的问题的更多相关文章

  1. ajax中的post方法中回调函数不执行的问题

    前一段时间接触了JQuery Ajax中的.post()方法和.get()方法,感觉到ajax的简洁和强大,当用到.post()方法时,去W3上查找相关的使用方法,感觉十分简单,用法很明了,然后,直接 ...

  2. Vue -- mounted方法中调用methods的方法(并取出mounted方法中回调函数的值)

    结果:

  3. array_reduce方法用回调函数迭代地将对数组的值进行操作

    在处理php数组的时候,有一种需求特别的频繁,如下二维数组: $arr = array( 1=>array( 'id' => 5, 'name' => '张三' ), 2=>a ...

  4. [js]js中回调函数

    //回调函数: 把一个函数当参数传给另个函数 /* function f1() { console.log('f1'); } function f2(f) { f(); console.log(1); ...

  5. JavaScript中回调函数的使用

    在JavaScript中,回调函数具体的定义为:函数A作为参数(函数引用)传递到另一个函数B中,并且这个函数B执行函数A.我们就说函数A叫做回调函数.如果没有名称(函数表达式),就叫做匿名回调函数. ...

  6. C++中回调函数(CallBack)的使用

    如果试图直接使用C++的成员函数作为回调函数将发生错误,甚至编译就不能通过. 其错误是普通的C++成员函数都隐含了一个传递函数作为参数,亦即“this”指针,C++通过传递this指针给其成员函数从而 ...

  7. qt 中回调函数的实现

    在QT中回调函数主要可以实现多态性,通过回调函数可以动态处理一些操作.在多线程中,当同时需要处理多个事务的时候,显然你会去创建多个线程类然后实例化,这显然会增加开发工作,当我们在线程类中加入一个回调函 ...

  8. $.getJSON('url',function(data){}) 中回调函数不执行

    $.getJSON('url',function(data){}) 中回调函数不执行 url 中的 json 格式不正确 ,浏览器返回并没有报错 {'湖北':[114.11438,30.849429] ...

  9. Windows编程中回调函数的使用心得(MFC篇)

    回调函数就是一个通过函数指针调用的函数.如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数.回调函数不是由该函数的实现方直接调用,而是在特定 ...

随机推荐

  1. hexo博客-性能优化

    前言 刚开始搭建博客的时候觉得很好玩,可是玩的久了,问题慢慢就出来了,就跟谈恋爱一样==.比如现在我访问博客的时候就感觉慢的要死,不可否认,使用hexo搭建服务器方便快捷,但是由于github作为服务 ...

  2. window7 桌面新建快捷方式方法

    点击开始按钮 所有程序 找到某个文件夹点开,找到文件夹里的快捷方式图标,右键--属性-- 复制 目标:上图蓝色内容. 回到桌面,右键--新建--快捷方式--把复制的内容粘贴到  请键入对象的位置-- ...

  3. js Function()构造函数

    var scope="global";    function constructFunction(){        var scope="local";   ...

  4. YYStock开源----iOS股票K线绘制第二版

    新的股票绘制粗来啦,欢迎围观star的说(*^__^*) 嘻嘻-- 捏合功能也准备完善了 Github:https://github.com/yate1996/YYStock 长按分时图+五档图 分时 ...

  5. iOS存储数据字典到沙盒

    1.创建一个账号数据模型 用来存放从服务器返回的数据,一般返回的是一个字典,里面包含了这个登陆用户的各种信息,这个数据模型就是用来存放这些东西的 创建一个数据模型  YYCAccount 继承 NSO ...

  6. Extjs5 tabs实例

    <%@ page language= "java" contentType ="text/html; charset=UTF-8"     pageEnc ...

  7. grunt-笔记

    package.json: { "name": "grunt-uglify", "version": "1.0.0", ...

  8. 5-2 bash 脚本编程之一 变量、变量类型等

    1. bash变量类型 1. 环境变量 2. 本地变量(局部变量) 3. 位置变量 4. 特殊变量 2. 本地变量 VARNAME=VALUE, 整个bash进程 3. 环境变量 作用域为当前shel ...

  9. Java实现office文档与pdf文档的在线预览功能

    最近项目有个需求要java实现office文档与pdf文档的在线预览功能,刚刚接到的时候就觉得有点难,以自己的水平难以在三四天做完.压力略大.后面查找百度资料.以及在同事与网友的帮助下,四天多把它做完 ...

  10. MyBatis源码分析-MyBatis初始化流程

    MyBatis 是支持定制化 SQL.存储过程以及高级映射的优秀的持久层框架.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以对配置和原生Map使用简 ...