javascript 为什么要用callback传函数, 而不直接在这个函数里调用另一个函数

javascript为什么要用callback传函数,而不直接在这个函数里调用另一个函数... javascript 为什么要用callback传函数, 而不直接在这个函数里调用另一个函数 展开
 我来答
zoubingquan
推荐于2016-05-11 · TA获得超过377个赞
知道小有建树答主
回答量:170
采纳率:100%
帮助的人:153万
展开全部
通俗的讲就是被调用的函数不知道你要做什么, 你需要将执行的操作作为回调函数传入

比如插件, 当插件执行时你需要自定义一些操作, 插件开发者不知道你需要什么操作, 只能预留一个回调函数接口,供你传入回调函数,

例如你写了一个下拉框插件, 功能是将模拟select操作, 那么当onchange的时候是需要使用者根据需求去处理的, 而你的插件是要给很多人用的, 你不知道每个人onchange的时候要做什么事情, 这个时候你在onchange你判断一下是否有A这个函数,有的话就调用,然后继续处理接下来的逻辑. , 用户如果在onchange的时候有需求, 传入A的实现即可. ,就相当于执行用户的操作了, 就叫回调函数.
zwf193071
2014-07-10
知道答主
回答量:32
采纳率:0%
帮助的人:11.9万
展开全部
<html>
<head>
<title>Callback function test</title>
<script language="javascript" type="text/javascript">
function main(callback)
{
alert("I am main function");
alert("Invoke callback function..");
callback();
}
function b(){
alert("I am callback function: b");
}
function c(){
alert("I am callback function: c");
}

function test() {
main(b);
main(c);
}

</script>
</head>
<body>
<button onClick="test()">click me</button>
</body>
</html>
这里面main(b),那么b就称作回调函数,是不是很好理解?那有人会说我为什么不可以把b的调用放到main函数里呢?确实可以,但是那样你的main方法就只能调用b了。这里我们将b传递个main,或者a传递个main,那main里面的callback方法就是动态的回调函数。优点就在这里。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友5e99258cf
2014-07-10 · TA获得超过1687个赞
知道大有可为答主
回答量:1299
采纳率:71%
帮助的人:696万
展开全部
回调函数在JS的API里有一段解释是这样的:
A callback is a function that is passed as an argument to another function and is executed after its parent function has completed.(不懂可以去百度翻译一下)
说的很明白了~
就是为了在执行完父级函数后再执行回调函数(就是为了保持这个执行顺序因为JS单线程的问题),然后再一个优点就是楼上说的了,可以作为参数,随时改传进去的函数,更灵活了~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
当年的反应慢
2014-07-09 · TA获得超过637个赞
知道小有建树答主
回答量:612
采纳率:50%
帮助的人:376万
展开全部
我的理解是javascript本身不提供多线程功能,但是需要发送异步请求,异步请求是没办法顺序执行的,回调函数一般是为了处理这种非同步请求而设计的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
暮霭月色
2014-07-11
知道答主
回答量:38
采纳率:0%
帮助的人:9.5万
展开全部
看需求,这个在模块类封装中很重要的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式