博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js 回调函数 精析
阅读量:5156 次
发布时间:2019-06-13

本文共 1919 字,大约阅读时间需要 6 分钟。

 

UpdateTime--2018年9月13日16点51分

1.什么是回调函数?

  在JavaScript中,回调函数具体的定义为:

  函数A作为参数(函数引用)传递到另一个函数B中,并且这个函数B执行函数A。我们就说函数A叫做回调函数;

  如果没有名称(函数表达式),就叫做匿名回调函数。

  简单的来说,将函数作为参数传递给另一个方法。

2.回调函数适用场合

  jquery 页面加载完毕  $(function(){"要执行操作"});

  jquery iframe页面加载完毕 $('#iframe').load(function(){"要执行操作"});

  jquery ajax调用,绑定事件,setTimeout(),setInterval()。。。

3.回调函数不带参数调用

  回调函数为普通函数

  方式一:推荐使用

function parentFun (callback) {    callback();}function childFun () {    alert("回调函数");}// 调用parentFun(childFun);

  方式二

function parentFun (callback) {    eval(callback);}function childFun () {    alert("回调函数");}// 调用parentFun("childFun()");  

  回调函数为匿名函数

function parentFun (callback) {    callback();}// 调用parentFun(function(){    alert("匿名函数作为回调函数");});

4.回调函数带参调用

  回调函数为普通函数

  方式一

function parentFun (callback) {    eval(callback);}function childFun (param) {    alert(param);}// 调用parentFun('childFun("回调函数")');

  方式二

function parentFun (callback,param) {    callback(param);}function childFun (param) {    alert(param);}// 调用parentFun(childFun,"回调函数");

  方式三:推荐使用

function parentFun (callback) {    callback();}function childFun (param) {    alert(param);}// 调用parentFun(function(){    childFun("回调函数");});  

  方式四

function parentFun (callback,param) {    callback(param);}function childFun (param) {    alert(param);}// 调用parentFun(function(param){    childFun(param);},"回调函数");

  方式五:不推荐使用

function parentFun (callback) {    callback("回调函数");}function childFun (param) {    alert(param);}// 调用parentFun(childFun);

  小结:

  方式一和方式五虽然可以实现,但是不支持使用,因为jquery插件一般都不支持这种调用方式,通常支持的是方式三;

  方式三和方式四本质上还是通过匿名函数实现的;

  方式二和方式四都是将回调函数所需的入参作为主函数的一个参数来实现的。

  回调函数为匿名函数

function parentFun (callback,param) {    callback(param);}// 调用parentFun(function(param){    alert(param);},"回调函数");

5.回调函数执行时机

  同步执行的情况,回调函数一般是最后执行;

  异步执行的情况(ajax),回调函数不一定会执行。

 

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

 相关推荐:

 

 

转载于:https://www.cnblogs.com/Marydon20170307/p/6647401.html

你可能感兴趣的文章
配置IIS虚拟目录遇到的5个问题
查看>>
2-03顺序表的操作
查看>>
耿丹CS16-2班第一次作业汇总
查看>>
查看mysql表大小
查看>>
命令行程序测试自动化
查看>>
My Blog
查看>>
array_reduce() 与 array_map()
查看>>
SASS实现代码的重用:混合器Mixin、继承
查看>>
《windows核心编程系列》三谈谈内核对象及句柄的本质
查看>>
Linux下安装maven
查看>>
转:【Java并发编程】之十五:并发编程中实现内存可见的两种方法比较:加锁和volatile变量...
查看>>
linux nohup【转】
查看>>
SQL语句优化
查看>>
校验银行卡号是否符合Luhn算法及生成符合Luhn算法的银行卡号
查看>>
MFC 双缓冲加载背景
查看>>
记录自己最近的学习状态
查看>>
hdu 1142 最短路+记忆化深搜---好题
查看>>
day 018 面向对象--约束和异常处理
查看>>
Day3_基本数据类型
查看>>
Fire Maze(广度优先搜索)
查看>>