请问关于回调函数的疑问

请问关于回调函数的疑问

请问老师看了上一节内容,突然对回调函数有了疑问?
请问下如果函数的参数中存在函数,如果在主函数中并没有调用callback那么这个回调函数是否会自动执行?
如果调用他的执行顺序是什么?回调函数不是异步的对吧,调用之后主函数依然想下执行是吗?以及还是请问回调函数在主函数执行完毕是否会自动执行?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
好帮手慕糖 2018-07-22 18:13:49

你好,1、不太理解你说的自己调用时什么意思?自执行吗还是指匿名函数?如下,是匿名函数,可以结合理解下,看你说的是否是这个:

var friends = ["Mike", "Stacy", "Andy", "Rick"];
 friends.forEach(function (eachName, index){
    console.log(index + 1 + ". " + eachName); // 1. Mike, 2. Stacy, 3. Andy, 4. Rick
});

2、上面你的例子是一个同步回调函数,函数的执行顺序依然自上而下顺序执行。所以输出了回调函数中的内容,然后输出了主函数中的内容。

祝学习愉快~

提问者 hy_wang 2018-07-21 09:28:00

请问一下老师不是说回调函数是异步的吗

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
  <title>drag</title>
  <style>
    .container {
      width: 200px;
      height: 200px;
      background-color: yellow;
    }
    .target {
      width: 100px;
      height: 100px;
      background-color: pink;
    }
  </style>
</head>
<body>
  <div id="container" class="container" ondrop="drop(event)" ondragover="dragover(event)" ondragend='dragend(event)'></div>
  <div id="target" class="target" draggable="true" ondragstart="dragstart(event)"></div>
  <script>
   function fn(num1,num2,callback){
    var num=num1*num2;
    callback(num);
    console.log('fn运行了');
}
fn(10,20,function(num){
    console.log(' 这个数是:'+num)
})
    
  </script>
</body>
</html>

为什么是先打印num才打印fn执行了,不应该先打印fn执行了吗

好帮手慕糖 2018-07-20 19:09:39

你好,在你说的上一节中没有找到回调函数,可以具体标明下在哪一块。另:回调函数是一种被作为参数传递给另一个函数的函数,回调函数会在另一个函数内被调用(或执行)。

可以说是在执行某个函数(A函数)时,可以将另一个函数(B函数)作为实参传入,在A函数代码块执行完之后,接着在函数内调用B函数,而且A函数的执行结果,可以被B函数使用。可以结合以下小例子进行理解:

function fn(num1,num2,callback){
    var num=num1*num2;
    callback(num);
}
fn(10,20,function(num){
    console.log(' 这个数是:'+num)
})

若能解决你的疑问,望采纳。

祝学习愉快~

  • 提问者 hy_wang #1
    请问老师回调函数会在函数执行完成之后会自己调用吗
    2018-07-20 21:29:33
  • 提问者 hy_wang #2
    以及我想请问老师callback的执行顺序是怎么回事?callback是调用到立即占用主线程执行还是说他是异步,只有在主函数执行完之后才执行
    2018-07-20 22:00:15
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星

相似问题

登录后可查看更多问答,登录/注册

组件化思想开发电商网页 18版
  • 参与学习           人
  • 提交作业       467    份
  • 解答问题       4826    个

本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师