首页 > javascript的回调函数问题

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');//如果从目标地址加载文件特别慢,不会影响这句执行吗?

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


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

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


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

【热门文章】
【热门文章】