之前写的异步JS是纯译文,现在刚好工作了2个月,想谈谈我自己对JS回调函数的一点理解,欢迎渴望大家的指正和交流。
回调函数从形式上看就是把函数b作为参数传给函数a,在a的函数体里调用函数b
1 function a(b) { 2 b(); 3 } 4 function b() { 5 ... 6 }
这样做的意义是什么呢
1.控制执行流程,函数b只能在函数a执行后才执行
2.根据不同的需求,可以有各种各样的函数b
3.最重要的,是可以把通过函数a获取的数据传递给函数b,在b里对数据做处理
1 function a(callback) { 2 ... 3 var record = reallyComplexProcedure(); //经过一系列复杂的操作,拿到了数据record 4 if (typeof callback === "function") {
5 callback(record);
6 } 7 } 8 function b(data) { 9 ... //对data做处理 10 } 11 a(b);
我们对函数a里的record感兴趣,并在程序的其他的地方想要对record做各种各样的操作,那么就可以传入对应的回调函数。当然,这种方式的一个明显缺点(我目前的理解)是如果我们对函数a里的record2又感兴趣了,那么就不够灵活了。