两者的区别:
第一种方法:函数声明在编写时可以先调用,再声明;
第二种方法:函数表达式必须先定义,再调用
<a class="btn btn-sm btn-red-hollow attention" id="btnAttent" target="_blank">更多免费教学文章<font color="blue" size="2">请关注这里</font></a>
函数的回调
在这里插入图片描述主要的理解: 当用户用的时候,不是直接触发的状态,当他满足一定条件后执行叫回调函数
在这里插入图片描述练习:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Document</title>
<script type="text/javascript">
function show(){
alert("欢迎来到Camel的空间");
}
window.onclick=show;//回调函数
</script>
</head>
<body>
</body>
</html>
image.png
<script language="javascript">
02 function SortNumber( obj, func ) // 定义通用排序函数
03 {
04 // 参数验证,如果第一个参数不是数组或第二个参数不是函数则抛出异常
05 if( !(obj instanceof Array) || !(func instanceof Function))
06 {
07 var e = new Error(); // 生成错误信息
08 e.number = 100000; // 定义错误号
09 e.message = "参数无效"; // 错误描述
10 throw e; // 抛出异常
11 }
12 for( n in obj ) // 开始排序
13 {
14 for( m in obj )
15 {
16 if( func( obj[n], obj[m] ) ) // 使用回调函数排序,规则由用户设定
17 {
18 var tmp = obj[n]; // 创建临时变量
19 obj[n] = obj[m]; // 交换数据
20 obj[m] = tmp;
21 }
22 }
23 }
24 return obj; // 返回排序后的数组
25 }
我们先来看看回调的英文定义:A callback is a function that is passed as an argument to another function and is executed after its parent function has completed。
字面上的理解,回调函数就是传递一个参数化的函数,就是将这个函数作为一个参数传到另一个主函数里面,当那一个主函数执行完之后,再执行传进去的作为参数的函数。走这个过程的参数化的函数 就叫做回调函数。换个说法也就是被作为参数传递到另一个函数(主函数)的那个函数就叫做 回调函数。
举一个别人举过的例子:约会结束后你送你女朋友回家,离别时,你肯定会说:“到家了给我发条信息,我很担心你。” 对不,然后你女朋友回家以后还真给你发了条信息。小伙子,你有戏了。其实这就是一个回调的过程。你留了个参数函数(要求女朋友给你发条信息)给你女朋友,然后你女朋友回家,回家的动作是主函数。她必须先回到家以后,主函数执行完了,再执行传进去的函数,然后你就收到一条信息了。
回调函数应用场景多用在使用 js 写组件时和耗时操作上面,尤其是组件的事件很多都需要回调函数的支持。
如果还是不明白,下面看一下代码:
<script type="text/javascript">
function title(value){//这是回调函数!!!!
alert(value);
}
function main(title, value){//这个主函数:在参数列表中,title作为一个参数传递进来,也就是上文说的 参数化函数;然后value这个值正是title()函数中所需要的。
alert("我是主函数");
title(value);//结果为:'我是回调函数'。——————然后在这行这个title(),它就是回调函数咯。
}
main(title,"我是回调函数");//title参数加上()后,就会变回一个函数,并会被执行一次。
//PS:看清楚,调用的是main()函数,意味着先执行main(),这时已经执行了主函数,title()被main()在函数体中执行了一次,因此title()是回调函数。
</script>
回调函数易混淆点——传参:
一,将回调函数的参数作为与回调函数同等级的参数进行传递。
二,回调函数的参数在调用回调函数内部创建。
image.png翻译过来就是:回调函数是一个作为变量传递给另外一个函数的函数,它在主体函数执行完之后执行。
function A有一个参数function B,function B会在function A执行完成之后被调用执行。
三. 回调函数的使用方法
代码如下:
function a(callbackFunction){
alert("这是parent函数a");
var m =1;
var n=3;
return callbackFunction(m,n);
}
function b(m,n){
alert("这是回调函数B");
return m+n;
}
$(function(){
var result = a(b);
alert("result = "+ result);
});
执行顺序为:
这是parent函数a
这是回调函数B
result = 4
函数首先执行了主题函数a,之后调用了回调函数b,最后返回函数a的返回值。
网友评论