匿名函数:

通过这种方式定义的函数:(没有名字的函数)

作用:当它不被赋值给变量单独使用的时候

1.将匿名函数作为参数传递给其他函数

2.定义某个匿名函数来执行某些一次性任务

var f = function (a) {

return a;

};

回调函数:

function invokeAdd(a, b) {

return a() + b();

}

function one() {

return 1;

}

function two() {

return 2;

}

invokeAdd(one, two);

//3

也可以直接用匿名函数来代替:

invokeAdd(function () { return 1; }, function () { return 2; });

可读性更高的写法:

invokeAdd(

function () { return 1; },

function () { return 2; }

);

还可以:

invokeAdd(

function () {

return 1;

},

function () {

return 2;

});

当将函数A传递给函数B,并由B来执行A时,A就成了一个回调函数(callback function),A如果是一个无名函数,就称为匿名回调函数

回调函数的优势:

1.可以让我们不做命名的情况下传递函数(节省变量名的使用)

2.可以将函数调用操作委托给另一个函数(节省代码编写工作)

3.有助于提升性能

回调函数示例:

需要将一个函数的返回值传递给另一个函数

function multiplyByTwo(a, b, c) {

var i,

ar = [];

for (var i = 0; i < 3; i++) {

ar[i] = arguments[i] * 2;

}

return ar;

}

调用:

multiplyByTwo(1,2,3);

结果:

[2, 4, 6]

function addOne(a) {

return a + 1;

}

调用:

addOne(100);

--101

实现三个元素在两个函数之间的传递:

1.定义另一个数组,用来存储来自第一步的结果

var myarr = [];

myarr = multiplyByTwo(10, 20, 30);

2.循环遍历每一个元素,分别传递给addOne()

for (var i = 0; i < 3; i++) {

myarr[i] = addOne(myarr[i]);

}

调用:

myarr;

[21, 41, 61]

以上代码的缺点使用了两个循环,需要合二为一:

function multiplyByTwo(a, b, c, callback) {

var i, ar = [];

for (var i = 0; i < 3; i++) {

ar[i] = callback(arguments[i] * 2);

}

return ar;

}

调用:

myarr = multiplyByTwo(1, 2, 3, addOne);

用匿名函数来代替addOne(),可以节省一个额外的全局变量

myarr = multiplyByTwo(1, 2, 3, function (a) { return a + 1;});

即时函数:(在定义后立即调用)

(

function () {

alert('boo');

}

)();

只需要将匿名函数的定义放进一对括号中,然后外面紧跟一对括号即可。第二对括号起到“立即调用”的作用,也是我们向匿名函数传递参数的地方

(

function (name) {

alert('Hello' + name + '!');

}

)('dude');

使用匿名函数的好处是不会产生任何全局变量,缺点是这样的函数是无法重复执行的(除非放在某个循环或其他函数中),使的即时函数非常适合执行一些一次性的或初始化的任务

内部私有函数:

在一个函数中定义另一个函数

function outer(param) {

function inner(theinput) {

return theinput * 2;

}

return 'The result is ' + inner(param);

}

改用函数标识法:

var outer = function (param) {

var inner = function (theinput) {

return theinput * 2;

};

return 'The result is ' + inner(param);

};

结果:

outer(2); --The result is 4

outer(8); --The result is 16

inner(2); --inner is not defined

使用私有函数的好处:

1.有助于我们确保全局名字空间的纯净性

2.确保私有性——只选择一些必要的函数暴露给“外部世界”,而保留属于自己的函数,不为该应用程序的其他部分所用

返回函数的函数:

function a() {

alert('A');

return function () {

alert('B');

};

}

var newFync = a();

newFync();

让返回的函数立即执行:

a()();

java调用js匿名函数参数,js中匿名函数和回调函数相关推荐

  1. html动态加载js方法,原生JS实现动态加载js文件并在加载成功后执行回调函数的方法...

    本文实例讲述了原生JS实现动态加载js文件并在加载成功后执行回调函数的方法.分享给大家供大家参考,具体如下: 有的时候需要动态加载一个javascript文件,并且在加载成功后执行回调函数(例如文件中 ...

  2. 原生js判断css动画结束 css 动画结束的回调函数

    原文:原生js判断css动画结束 css 动画结束的回调函数 css3 的时代,css3--动画 一切皆有可能: 传统的js 可以通过回调函数判断动画是否结束:即使是采用CSS技术生成动画效果,Jav ...

  3. html js发送http请求数据格式,JS获取url参数,JS发送json格式的POST请求方法

    一.获取url所有参数值 function US() { var name, value; var str = location.href; var num = str.indexOf("? ...

  4. java socket 异步回调函数,分享nodejs异步编程基础之回调函数用法

    nodejs异步编程基础之回调函数用法分析 本文实例讲述了nodejs异步编程基础之回调函数用法.分享给大家供大家参考,具体如下: Node.js 异步编程的直接体现就是回调. 异步编程依托于回调来实 ...

  5. 登录页面添加回车和单击登录事件 jQuery.ajax中的 beforeSend:function () 回调函数【日常记录】

    比较有意思的地方1: 实现如下功能可以两种方法 用jQuery.ajax中的 beforeSend:function () 回调函数:如下(下方有全部代码案例) beforeSend:function ...

  6. c语言常用数学函数大全查询,C语言数学函数 C语言中全部可用的数学函数有哪些?...

    导航:网站首页 > C语言数学函数 C语言中全部可用的数学函数有哪些? C语言数学函数 C语言中全部可用的数学函数有哪些? 相关问题: 匿名网友: /*--------------------- ...

  7. pandas使用replace函数替换dataframe中的值:replace函数对dataframe中的多个值进行替换、即一次性同时对多个值进行替换操作

    pandas使用replace函数替换dataframe中的值:replace函数对dataframe中的多个值进行替换.即一次性同时对多个值进行替换操作 目录

  8. pandas使用replace函数替换dataframe中的值:replace函数对dataframe中指定数据列的值进行替换、替换具体数据列的相关值

    pandas使用replace函数替换dataframe中的值:replace函数对dataframe中指定数据列的值进行替换.替换具体数据列的相关值 目录

  9. java调用js匿名函数参数,js匿名函数作为函数参数详解

    由衷的感叹,js真是烦. 学到现在,渐渐理解了什么是:语言都是通用的,没有好不好,只有擅长不擅长. 继承,多态,甚至指针,c能实现,c++,java有,javascript(和java是雷锋和雷峰塔的 ...

最新文章

  1. 文巾解题 557. 反转字符串中的单词 III
  2. 【渗透测试】一次从黑盒转向白盒
  3. 520,花一夜给女神写走迷宫游戏
  4. 使用WebRTC开发Android Messenger:第3部分
  5. mysql source导入慢,MySQL mysqldump与source导入慢怎么解决
  6. Replication--复制延迟的诊断和解决
  7. 用StreamReader读取服务器端文本文件,或远程网页
  8. delphi--csv,txt文本转换成excel .
  9. matlab外接矩形,matlab求二值圖像最小外接矩形
  10. 冰城环保进入智慧时代
  11. TestDirector安装配置
  12. css控制图片自适应大小
  13. 通信原理 AMI码和HDB3码的编码方式
  14. 中国富人的身影:世界最大楼市泡沫在加拿大
  15. 中国计算机学会推荐国际学术会议和期刊目录 2015
  16. 计算机术语中ict表示是什么意思,ICT是什么工作
  17. 荧光染料 ICG-HSA 吲哚菁绿修饰人血白蛋白
  18. 基于android的单词记忆英语考试系统app
  19. 哈工大软件构造lab3总结
  20. 成本优化之使用P2P的方案的需要了解的本地SDK的背后的原理

热门文章

  1. 获取位置_原神手游新兵的徽记哪里刷 新兵的徽记获取位置分享
  2. python快速查找_python应用_快速查找 | 学步园
  3. centos 修改root密码_MYSQL8.0以上版本正确修改ROOT密码
  4. 【Objective-C学习记录】第二十天
  5. 深入Python进程间通信原理--图文版
  6. Python 数据分析师必备的入门学习路线和技能
  7. 帝国CMS7.5-后台的新闻正文编辑器更换成百度编辑器
  8. linux 设备驱动(一)
  9. 用Win 2003架设邮件服务器(转)
  10. DPDK系统学习—DPDK的虚拟交换机框架 OvS