作为一种典型的函数式编程语言,Javascript中的函数实际上是对象,可以存储在"变量"中,也能作为函数参数被传递,能在函数中被创建,也能在函数中被返回。
函数式编程:将函数看作变量(简单的解释方式),回调函数就是从函数式编程这样的编程范式中衍生出来的,使用回调函数又称作回调模式。
所以,今天开始看回调函数,等待网址注册的回复消息,然后去上班,被堵车支配的打卡迟点恐慌让我醒很早,唉,我要是这个月没有迟到一次,我就请自己运动一个小时。
--->回调函数
回调函数:函数A,被作为参数传递给函数B,在函数B中被使用,则函数A是回调函数。
作为参数传递给函数B的时候,函数A并不执行,只是传递函数名给函数B,当需要运行的时候,函数A才会被响应,开始执行。
//如何判断函数是否作为参数成功传入 var result = "successed."; var testFun = function(function_1){ console.log("Test begin."); if(function_1 && typeof(function_1) === "function"){ //判断function_1是否成功传入,传入的是否为function function_1(); } else{ console.log("failed."); } console.log("Test finish."); } var function_1 = function(){ console.log(this.result); //testFun中没有定义,会继续去外面找,也就是全局中寻找,可以找到,可以的 }; testFun(function_1);
匿名函数也可以作为参数传入另外一个函数:
//如何判断函数是否作为参数成功传入 var result = "successed."; var testFun = function(function_1){ console.log("Test begin."); if(function_1 && typeof(function_1) === "function"){ //判断function_1是否成功传入,传入的是否为function function_1(); } else{ console.log("failed"); } console.log("Test finish."); } testFun(function(){console.log(this.result);});
-->回调函数的使用场合推荐
--->资源加载:动态加载js文件后执行回调,AJAX操作后回调等等
--->链式调用:setter方法比较好实现,getter方法不是很好实现了就
--->异步函数setTimeout、setInterval的调用:将timer的结果告诉主程序,主程序需要继续执行,因而不能用return
--->DOM事件及Node.js事件