javascript的回调函数问题

新手上路,请多包涵

今天看了很多回调函数的文章,可是都说是把函数作为参数传递到另一个函数中调用,比如A()函数是一个回调函数,作为函数B的参数B(A),这样调用,这种方式叫回调函数。可是如果A函数不作为B函数的参数传递到B中,但是在B中却调用了函数A,这样叫回调函数吗?在JSONP跨域问题上:

function box(value){//回调函数
    console.log(value);
}
window.onload=function(){
        getInfo('../139.129.6.91/test.js?callback=box');
}
function getInfo(url){
    var oScript=document.createElement('script');
    oScript.style='text/javascript';
    oScript.src=url;
    document.getElementsByTagName('html')[0].appendChild(oScript);//获取完文件后会得到一个回调函数
}
console.log('1');//如果从目标地址加载文件特别慢,不会影响这句执行吗?

就是想知道这种不把函数当参数传递的方式,但是在另一个函数内部却调用了,也叫作回调函数吗?

阅读 3.5k
2 个回答

按定义的话,仅仅是在另外一个函数内调用的函数不叫回调函数。

上面的写法并没有作为参数传递的函数,所以不存在什么回调函数。但这种异步请求可以很容易地包装成回调函数的形式,就像 Jquery 做的那样,当然异步编程方法除了回调函数,还可以是其他模式,比如 promise、generator...

你的box确实也是回调函数,虽然它和普通的给函数传递函数有些不一样,因为这里的JSONP的问题。
回调是一种约定,用来解决不能用return获取返回值的问题。ajax回调,事件回调,JSONP回调都是一样的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题