发布于 1970-01-01 08:00
  • 6 个回答
    • 回调函数通常用在事件模型和异步调用中,它们可以看作是两种编程思想,回调函数是它们的具体用法之一。

      2022-11-22 02:36 回答
    • In computer programming, a callback is a piece of executable code that
      is passed as an argument to other code, which is expected to call back
      (execute) the argument at some convenient time. The invocation may be
      immediate as in a synchronous callback, or it might happen at later
      time as in an asynchronous callback. In all cases, the intention is to
      specify a function or subroutine as an entity that is, depending on
      the language, more or less similar to a variable.

      functions are first class.

      it means that you can treat functions as normal variables.

      callback functions are just a practise of first-class functions.

      nothing to be special.

      however, it's not a necessity to think functions as first class in order to use callback functions.

      you could think callback functions as passing memory address of the entry, instead of function itself as an entity.

      in brief, callback functions are both the way you think and the way you write code.

      it is a false dichotomy that the way you think and the way it works should stand in opposition.

      2022-11-22 02:36 回答
    • 在这个例子中,实际上在加载完百度的那段js脚本后会执行一个函数,函数名就是加在url中的参数传过去的。
      后台程序解析url中的参数,在后台生成相应的js代码片段。
      程序执行过程:
      1.声明"show"函数。
      2.加载<script src="https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=web&cb=show"></script>这段脚本。
      3.后台程序解析url中的参数,根据cb=show这个参数会执行 "show(data)",如果cb=haha,那么就执行"haha(data)",这里的data是后台返回的数据,传递给前台使用。
      4.程序执行完毕。
      在这个过程中,声明函数"show"是为了接收后台返回的数据,可以理解成“前端告诉后台,我家信箱在这里,你把信件放到那里,然后我去取。”
      个人认为回调是一种用法,算不上编程思想。

      2022-11-22 02:36 回答
    • 楼上说得对,其实你把函数也当成是一种变量就ok啦,var callback = function(){};然后把这个变量当成参数,传递给别的函数,别的函数就可以对这个变量做任何操作,包括执行里面的语句,那这个函数类型的变量就被称为回调函数。

      所以说,回调函数跟普通函数没什么区别,只是传了给别人用,可以说是一种处理问题的方式,在异步操作横行的JavaScript里,也已经成为了一种编程思想了。

      2022-11-22 02:36 回答
    • 体现出来了啊,你的show是一个函数,它被你当作参数传递给了另一个函数https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=web,仔细看你的script标签里的src内容,这个“地址”实际我们可以把它简单理解成一个网络api,最后面的cb其实好理解成callback

      它的意思是说,把show函数作为callback传递给了这个baidu的这个什么函数。

      2022-11-22 02:36 回答
    • “回调”是一种编程思想,“回调函数”是一个函数。

      js里面回调主要两种方式体现:
      一种是把函数本身当作一个参数传递,需要回调的之后直接执行,比如:

      javascriptvar cb = function(){
      //
      };
      $("#go").click(cb);
      

      这里的回到函数cb本身被当作了一个参数传递个.click,发生click事件时cb本事被直接执行,因为函数本身被传递了,所有你的cb不需要是全局可见的。

      另一种是把回调函数名称当作参数传递,需要回调的时候通过函数名执行,这种方式常见于跨域请求上,也就是你例子的jsonp,服务端通过你的回调函数名来构造一段对它进行调用的代码,比如你给的地址返回的是这段js:

      jsshow({q:"web",p:false,s:["webqq","webqq登陆","web of science","web微信","webstorm","webservice","微博","websocket","weblogic","webex"]});
      

      这种方式下你的回调函数必须是全局的,不然返回的js里面没法调用到,如果你的show是一个局部的函数就会报错了。不过现在大部分的ajax框架都有了自动把你的局部回调函数包装成全局函数的功能,包装之后从开发者的视角上就看不出了。

      补充一点,服务器是看不到你的js函数的,你没办法把函数传递给服务器回调,但你可以把函数名传递给服务器,让服务器知道请求完毕之后你想执行什么函数,然后把调用的js代码构造出来。

      单讲“回调函数”,它的确就只是一个函数,不是用法也不是编程思想,如果考虑它是怎么被调用的才会有用法或者编程思想方面的讨论。

      2022-11-22 02:36 回答
    撰写答案
    今天,你开发时遇到什么问题呢?
    立即提问
    PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
    Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有