亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

javascript 為什么要用callback傳函數, 而不直接在這個函數里調用另一個函數?

javascript 為什么要用callback傳函數, 而不直接在這個函數里調用另一個函數?

楊__羊羊 2019-02-05 10:06:00
javascript 為什么要用callback傳函數, 而不直接在這個函數里調用另一個函數
查看完整描述

4 回答

?
溫溫醬

TA貢獻1752條經驗 獲得超4個贊

通俗的講就是被調用的函數不知道你要做什么, 你需要將執行的操作作為回調函數傳入

比如插件, 當插件執行時你需要自定義一些操作, 插件開發者不知道你需要什么操作, 只能預留一個回調函數接口,供你傳入回調函數,

例如你寫了一個下拉框插件, 功能是將模擬select操作, 那么當onchange的時候是需要使用者根據需求去處理的, 而你的插件是要給很多人用的, 你不知道每個人onchange的時候要做什么事情, 這個時候你在onchange你判斷一下是否有A這個函數,有的話就調用,然后繼續處理接下來的邏輯. , 用戶如果在onchange的時候有需求, 傳入A的實現即可. ,就相當于執行用戶的操作了, 就叫回調函數.

查看完整回答
反對 回復 2019-03-17
?
慕工程0101907

TA貢獻1887條經驗 獲得超5個贊

<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方法就是動態的回調函數。優點就在這里。



查看完整回答
反對 回復 2019-03-17
?
qq_花開花謝_0

TA貢獻1835條經驗 獲得超7個贊

回調函數在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單線程的問題),然后再一個優點就是樓上說的了,可以作為參數,隨時改傳進去的函數,更靈活了~

查看完整回答
反對 回復 2019-03-17
?
慕的地6264312

TA貢獻1817條經驗 獲得超6個贊

我的理解是javascript本身不提供多線程功能,但是需要發送異步請求,異步請求是沒辦法順序執行的,回調函數一般是為了處理這種非同步請求而設計的

查看完整回答
反對 回復 2019-03-17
  • 4 回答
  • 0 關注
  • 769 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號