回调函数的使用
刚开始函数是从上到下执行
但是我设置了setTimeout导致这个函数还没执行完成下面的函数就开始了,导致我变量还是原来的变量不合理。那我就要让这个函数到点再执行。
所以我这个函数就不能直接写在外面了。要用回到的时候调用这个函数。(调用的函数你传过来,但是你里面还得调用这个函数才会生效)然后我又想简单点,我直接把这个函数写成匿名函数,不用调用函数了。
function timer(time, callback)
一会输出一下callback就知道输出的是不是匿名函数了
一会儿我就按照这个逻辑执行代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<script>
// function a() {
// return 1;
// }
// function b(aa) {
// return 2 + aa;
// }
// //调用:
// var c = 0;
// c = b(a()); //A是个函数,但它又作为一个参数在B函数中被调用
// console.log(c); //结果显示3
// var a = 0;
// var a = 0;
// function bb(x) {
// console.log(x);
// }
// function timer(time) {
// setTimeout(function () {
// a = 6;
// }, time);
// }
// //调用:
// console.log(a);
// timer(3000);
// bb(a);
var a = 0;
function bb(x) {
console.log(x);
}
function timer(time) {
setTimeout(function () {
a = 6;
}, time);
}
// function bb(x) {
// console.log(x);
// }
function timer(time, callback) {
console.log(callback);
setTimeout(function () {
a = 6;
callback(a);
}, time);
}
timer(3000, function (x) {
console.log(x);
});
// //调用:
console.log(a);
// // 达到3秒的时候执行这个条件,前面一个3000是参数,后面bb是函数也是回调函数
// // 本来js是异步的,这样就可以解决当3s以后先执行setTimeout的方法再执行bb方法,也就是回调函数里面的方法
// // 一般而言,函数的形参是指由外往内向函数体传递变量的入口,
// // 但此处加了callback后则完全相反,它是指函数体在完成某种使命后调用外部函数的出口!
// // 这时候应该明白什么叫"回调"了吧,也就是回头调用外部函数的意思。
// timer(3000, bb);
</script>
</head>
<body></body>
</html>