摘要:回调函数定义回调是一个函数,它作为参数传递给另一个函数,并在其父函数完成后执行。这意味着回调函数本质上是一个闭包。正如我们所知,闭包能够进入包含它的函数的作用域,因此回调函数能获取包含它的函数中的变量,以及全局作用域中的变量。
回调函数 定义
A callback is a function that is passed as an argument to another function and is executed after its parent function has completed.函数也是对象
回调是一个函数,它作为参数传递给另一个函数,并在其父函数完成后执行。
1、函数是一种对象
function test() {}; console.log(test instanceof Object); // true
很明显函数是一种对象,但你不能说函数是对象的一种。因为他俩之间是没有包含关系的。有点像鸡蛋和鸡的关系。
2、对象都是通过函数创建的
先来看一个例子
function test() { this.name="哈哈" }; var test2=new test(); console.log(test2 instanceof Object); //true
这个例子可以说明对象可以被函数创建。那为什么要说对象都是通过函数创建的,那对象字面量是不是也是通过函数来创建的,答案是肯定的,这是一种语法糖方式。举个简单的例子
var obj={ name:"哈哈", age:"18" } var obj=new Object() obj.name="哈哈"; obj.age="18";
上面的对象字面量其实是通过下面的构造函数来创建的。而其中的Object是一种函数:
console.log(typeof Object) //function
通过上面的简单例子我们可以得出一个结论:对象是通过函数创建的,而函数又是一种对象。
js的函数可以作为参数进行传递再看下面两段代码:
function say (value) { console.log((value)); } function execute (someFunction, value) { someFunction(value); } execute(say, "hi js.");
与
function execute (someFunction, value) { someFunction(value); } execute(function(value){console.log((value));}, "hi js.");
上面第一段代码是将say方法作为参数传递给execute方法
第二段代码则是直接将匿名函数作为参数传递给execute方法
实际上:
function say (value) { alert(value); } // 注意看下面,直接写say方法的方法名与下面的匿名函数可以认为是一个东西 // 这样再看上面两段代码是不是对函数可以作为参数传递就更加清晰了 say; function (value) { alert(value); }
这里的say或者匿名函数就被称为回调函数!
回调函数是闭包都能够我们将一个毁掉函数作为变量传递给另一个函数时,这个毁掉函数在包含它的函数内的某一点执行,就好像这个回调函数是在包含它的函数中定义的一样。这意味着回调函数本质上是一个闭包。
正如我们所知,闭包能够进入包含它的函数的作用域,因此回调函数能获取包含它的函数中的变量,以及全局作用域中的变量。
如何避免回调地狱你可以有如下几个方法:
• 模块化:将回调函数分割为独立的函数 • 使用Promises • 使用yield • 来计算生成器或Promise
解析:这个问题有很多种答案,取决你使用的场景,例如ES6, ES7,或者一些控制流库。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/105761.html
摘要:回调定义刚开始学习时,对回调函数的理解仅仅停留在知道定义阶段。什么是回调函数就是将一个函数作为参数传递给另一个函数,作为参数的这个函数就是回调函数。参考文章详解回调函数以为例解读异步回调和异步编程的种方法阮一峰的网络日志 回调定义 刚开始学习javascript时,对回调函数的理解仅仅停留在知道定义阶段。什么是回调函数? 就是将一个函数作为参数传递给另一个函数,作为参数的这个函数就是回...
摘要:同步与异步以上为同步代码,函数必须等函数执行完毕后才能执行。异步回调产生的结果就是,函数的调用并不直接返回结果,而往往是交给回调函数进行异步处理。 同步与异步: function a(){} function b(){} a(); b(); 以上为同步代码,函数b必须等函数a执行完毕后才能执行。 function a(){ ...
摘要:在中回调函数非常重要,它们几乎无处不在。首先你得先明白一点函数也是对象想弄明白回调函数,首先的清楚地明白函数的规则。理解了函数也是对象,先不急聊回调函数,先看看下面代码只写变量名返回的将会是方法本身,以字符串的形式表现出来。 在javascript中回调函数非常重要,它们几乎无处不在。像其他更加传统的编程语言都有回调函数概念,但是非常奇怪的是,完完整整谈论回调函数的在线教程比较少,倒是...
阅读 2788·2023-04-25 15:01
阅读 2811·2021-11-23 10:07
阅读 3330·2021-10-12 10:12
阅读 3389·2021-08-30 09:45
阅读 2155·2021-08-20 09:36
阅读 3526·2019-08-30 12:59
阅读 2328·2019-08-26 13:52
阅读 890·2019-08-26 13:24