1、回调函数:将函数A传给函数B,由函数B来执行A,则称A为回调函数。

例1:

例2

         function addone(a){return  a+;};          //定义一个回调函数
function mulitiply(a,b,c,callback) //定义一个可以调用回调函数的函数
{
var i,ar=new Array();
for(i=;i<;i++)
{
ar[i]=callback(arguments[i]*); //将输入参数乘以2之后作为回调函数的参数执行。
}
return ar;
}
var myarr=mulitiply(,,,addone);
myarr; //[3, 5, 7]

指定输入参数个数

改进代码,使其可以忽略输入参数个数。将代码修改后如下:

         function addone(a){return  a+1;};          //定义一个回调函数
function mulitiply(an) //定义一个可以调用回调函数的函数
{
var i,ar =new Array(arguments.length-1);
if (typeof arguments[arguments.length-1]==="function")
for(i=0;i<arguments.length-1;i++)
ar[i]=arguments[arguments.length-1](arguments[i]*2); //将输入参数乘以2之后作为回调函数的参数执行。
return ar;
}
var myarr=mulitiply(1,2,3,addone); //这种方式要求回调函数放在参数的最后一个
myarr; //[3, 5, 7]
var myarr=mulitiply(1,2,3,4,addone); //这种方式要求回调函数放在参数的最后一个
myarr; //[3, 5, 7, 9]

不指定输入参数个数

效果如图:

2、返回函数的函数:执行的函数返回值是一个函数引用。

         function a()
{
function b()
{
return 'B';
};
return b; //返回一个函数的引用
}
var newfunct=a(); //获得一个函数的引用
typeof newfunct; //"function"
newfunct(); //"B"
a()(); //"B"; a()表示获取一个函数的引用,a()();表示执行获取引用的函数

返回函数的函数

3、重写自己的函数:将一个指向函数的变量指向另一个函数实现重写。

例1:

重写函数常常用于在一个函数执行时必须完成一些初始化工作,这样以后在调用函数就不必重复执行一些不必要的操作。

例2:

结果如下:

         var a=function()
{
function init(){document.writeln('进行初始化工作<br/>');};
function actuall(){ document.writeln('正式进行实际的操作<br/>');};
init(); //执行初始化工作
return actuall; //返回函数引用
} (); //立即运行,变量 a 指向函数actuall

重写函数例子

步骤分解如下:

在大函数内包含了两个小函数,其中 init 用于执行初始化函数,而大函数后面带了(),即大函数立即执行,首先执行了init初始化函数,再次将 actuall 函数的引用赋给了变量a,以后再调用 a 时,就只调用 actuall 函数,而不再执行 init 函数了。

最新文章

  1. 【原创】我所理解的自动更新-外网web服务器配置
  2. windbg----as、$u0(固定别名、自定义别名)
  3. 把数据保存到数据库附加表 `dede_addonarticle` 时出错,请把相关信息提交给DedeCms官方。Duplicate entry
  4. C# 生成二维码,彩色二维码,带有Logo的二维码及普通条形码
  5. 搭建Spring + SpringMVC + Mybatis框架之三(整合Spring、Mybatis和Spring MVC)
  6. Java多线程(六) 线程系列总结
  7. Java网络编程(TCP客户端)
  8. 判断URL是否存在
  9. Hadoop Compression
  10. lightoj 1079 Just another Robbery
  11. yii2.0修改默认的访问控制器
  12. 小甲鱼OD学习第1讲
  13. Neutron:浮动ip
  14. Codeforces 755F PolandBall and Gifts bitset + 二进制优化多重背包
  15. SCOI2016 Day2 简要题解
  16. Supervisor进程管理&amp;开机自启
  17. Socket 学习笔记 01 常用函数
  18. P2864 [USACO06JAN]树林The Grove
  19. Codeforces807 A. Is it rated? 2017-05-08 23:03 177人阅读 评论(0) 收藏
  20. TPO-19 C1 Discussing A Point Raised In A Lecture

热门文章

  1. Delphi调用Java类
  2. C#下利用正则表达式实现字符串搜索功能的方法(转)
  3. SEM
  4. LINUX下SYN FLOOD攻击及LINUX下SYN攻防简述
  5. Unity3D 自动寻路入门指南
  6. nyoj-655-光棍的yy(大斐波那契数列)
  7. pcre函数详解
  8. JFreeChart - 简记
  9. MySQL实战 | 05 如何设计高性能的索引?
  10. shell实现文件内容查询如输入姓名结果显示电话号码等信息