在学习JS时遇到了回调函数,经过自己的一番摸索,对回调函数有了进一步的了解,顺便将其总结如下:
回调函数
回调函数是一段可执行的代码段,它作为参数传递给一个函数的时候,传递的只是函数的定义,并不会立即执行,在需要的时候回调这段代码段执行,回调函数是一个闭包,它能够访问到外层定义的变量。
先看下面这个例子:
function add(){
var count = 0;
return function(){
count++;
return count;
};
}
var a = add();//函数 add() 只执行一次,a 为函数 add() 返回的函数表达式
//此时有个闭包,即每次调用 count 时都是用同一个count
a(); //1
a(); //2
a; //回调函数表达式:function(){
// count++;
// return count;
// }
在这段代码中,函数 add() 只执行了一次,在JS垃圾回收机制中的引用计数中,变量 count 由于回调函数的引用,没有随着 add() 函数的结束而被回收,所以两个 a() 返回的 count 值将不相同。
在第一个 a() 时,是调用 add() 返回的回调函数,count++,故返回的 count 值为1;
在第二个 a() 时,也调用 add() 返回的回调函数,count的值加1,即count = 2。