js 回调函数 精析
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),回调函数不一定会执行。
写在最后
哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!
相关推荐:
js 回调函数 精析的更多相关文章
- vue.js源码精析
MVVM大比拼之vue.js源码精析 VUE 源码分析 简介 Vue 是 MVVM 框架中的新贵,如果我没记错的话作者应该毕业不久,现在在google.vue 如作者自己所说,在api设计上受到了很多 ...
- JS回调函数全解析教程
转自:http://blog.csdn.net/lulei9876/article/details/8494337 自学jQuery的时候,看到一英文词(Callback),顿时背部隐隐冒冷汗.迅速g ...
- 学习js回调函数
<!DOCTYPE HTML> <html> <head> <meta charset="GBK" /> <title> ...
- 如何理解JS回调函数
1.回调函数英文解释: A callback is a function that is passed as an argument to another function and is execut ...
- js回调函数(callback)理解
Mark! js学习 不喜欢js,但是喜欢jquery,不解释. 自学jquery的时候,看到一英文词(Callback),顿时背部隐隐冒冷汗.迅速google之,发现原来中文翻译成回调.也就是回调函 ...
- JS回调函数(callback)
在使用Jquery的时候,用到Callback(),回调函数的概念.而且很多. 比如: $.ajax({ url:"test.json", type: "GET" ...
- js回调函数
自学jQuery的时候,看到一英文词(Callback),顿时背部隐隐冒冷汗.迅速google之,发现原来中文翻译成回调.也就是回调函数了.不懂啊,于是在google回调函数,发现网上的中文解释实在是 ...
- JS回调函数的使用和作用
<html> <head> <title>回调函数(callback)</title> <script language="javasc ...
- C# dll 事件执行 js 回调函数
C# dll 事件执行 js 回调函数 前言: 由于js 远程请求 XMLHttpRequest() 不支持多线程,所以用C# 写了个dll 多线程远程抓住供js调用. 最初代码为: C#代 ...
随机推荐
- 【BZOJ】1042: [HAOI2008]硬币购物
1042: [HAOI2008]硬币购物 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3307 Solved: 2075[Submit][Stat ...
- CROC 2016 - Elimination Round (Rated Unofficial Edition) D. Robot Rapping Results Report 二分+拓扑排序
D. Robot Rapping Results Report 题目连接: http://www.codeforces.com/contest/655/problem/D Description Wh ...
- python 用gensim进行文本相似度分析
http://blog.csdn.net/chencheng126/article/details/50070021 参考于这个博主的博文. 原理 1.文本相似度计算的需求始于搜索引擎. 搜索引擎需要 ...
- iOS Contact框架功能研究
兄弟们,直接复制,感谢度娘,感谢谷哥!!! 1.读取联系人通讯录 /** * 读取联系人通讯录 */ -(NSMutableArray*)getContactList{ NSMutableArray ...
- React-如何在jsx中自动补全标签(vscode)
痛点: React库最近的增长趋势很明显, 很多朋友都在选择学习, 很多公司也在选择使用React栈. 但在使用React库写代码的时候, 有一个很让人苦恼的问题, 就是标签在jsx语法中不能自动补 ...
- 字符集UTFMB4
http://my.oschina.net/leejun2005/blog/232732#OSC_h3_4 http://ju.outofmemory.cn/entry/211473
- chm TO html 另类方法
因为网上下了很多chmtohtml ,都是试用版的, 转成html网页格式,总是有限制,或是不完整,我现在找到了一种折中方法,供大家参考 一,我的资源里有工具word to chm 里面有转成网页的 ...
- angular2组件通信
父到子 父组件: ts部分: @Component({ selector: 'app-info', templateUrl: './info.component.html', styleUrls: [ ...
- 无法执行磁盘检查因为windows无法访问
固态硬盘迁移系统后,将原先的系统盘(H,重新系统后固态硬盘的主分区变为了C盘)格式化,并和邻近的D盘合并.合并后,将盘符重新改为D盘,而D盘原有的软件安装目录Program Files无法识别,显示目 ...
- 以前写SpringMVC的时候,如果需要访问一个页面,必须要写Controller类,然后再写一个方法跳转到页面,感觉好麻烦,其实重写WebMvcConfigurerAdapter中的addViewControllers方法即可达到效果了
以前写SpringMVC的时候,如果需要访问一个页面,必须要写Controller类,然后再写一个方法跳转到页面,感觉好麻烦,其实重写WebMvcConfigurerAdapter中的addViewC ...