什么是函數(shù)?
- 實(shí)現(xiàn)特定功能的n條語(yǔ)句的封裝體
- 只有函數(shù)是可以執(zhí)行的, 其它類型的數(shù)據(jù)不能執(zhí)行
為什么要用函數(shù)?
- 提高代碼復(fù)用
- 便于閱讀交流
如何定義函數(shù)?
- 函數(shù)聲明
- 表達(dá)式
如何調(diào)用(執(zhí)行)函數(shù)?
function test2 () {
this.xxx = 'atguigu';
}
- test(): 直接調(diào)用
- obj.test(): 通過(guò)對(duì)象調(diào)用
- new test(): new調(diào)用
- test.call/apply(obj): 臨時(shí)讓test成為obj的方法進(jìn)行調(diào)用
var obj = {}
function test2 () {
this.xxx = 'atguigu'
}
// obj.test2() 不能直接, 根本就沒(méi)有
test2.call(obj) // obj.test2() // 可以讓一個(gè)函數(shù)成為指定任意對(duì)象的方法進(jìn)行調(diào)用
console.log(obj.xxx)
回調(diào)函數(shù)
1. 什么函數(shù)才是回調(diào)函數(shù)?
1). 你定義的
2). 你沒(méi)有調(diào)
3). 但最終它執(zhí)行了(在某個(gè)時(shí)刻或某個(gè)條件下)
比較好的回答:你到一個(gè)商店買(mǎi)東西,剛好你要的東西沒(méi)有貨,于是你在店員那里留下了你的電話,過(guò)了幾天店里有貨了,店員就打了你的電話,然后你接到電話后就到店里去取了貨。在這個(gè)例子里,你的電話號(hào)碼就叫回調(diào)函數(shù),你把電話留給店員就叫登記回調(diào)函數(shù),店里后來(lái)有貨了叫做觸發(fā)了回調(diào)關(guān)聯(lián)的事件,店員給你打電話叫做調(diào)用回調(diào)函數(shù),你到店里去取貨叫做響應(yīng)回調(diào)事件。
鏈接:https://www.zhihu.com/question/19801131/answer/13005983
來(lái)源:知乎
2. 常見(jiàn)的回調(diào)函數(shù)?
dom事件回調(diào)函數(shù) ==>發(fā)生事件的dom元素
定時(shí)器回調(diào)函數(shù) ===>window
ajax請(qǐng)求回調(diào)函數(shù)
生命周期回調(diào)函數(shù)
even.py
#回調(diào)函數(shù)1
#生成一個(gè)2k形式的偶數(shù)
def double(x):
return x * 2
#回調(diào)函數(shù)2
#生成一個(gè)4k形式的偶數(shù)
def quadruple(x):
return x * 4
callback_demo.py
from even import *
#中間函數(shù)
#接受一個(gè)生成偶數(shù)的函數(shù)作為參數(shù)
#返回一個(gè)奇數(shù)
def getOddNumber(k, getEvenNumber):
return 1 + getEvenNumber(k)
#起始函數(shù),這里是程序的主函數(shù)
def main():
k = 1
#當(dāng)需要生成一個(gè)2k+1形式的奇數(shù)時(shí)
i = getOddNumber(k, double)
print(i)
#當(dāng)需要一個(gè)4k+1形式的奇數(shù)時(shí)
i = getOddNumber(k, quadruple)
print(i)
#當(dāng)需要一個(gè)8k+1形式的奇數(shù)時(shí)
i = getOddNumber(k, lambda x: x * 8)
print(i)
鏈接:https://www.zhihu.com/question/19801131/answer/27459821
來(lái)源:知乎
當(dāng)程序跑起來(lái)時(shí),一般情況下,應(yīng)用程序(application program)會(huì)時(shí)常通過(guò)API調(diào)用庫(kù)里所預(yù)先備好的函數(shù)。但是有些庫(kù)函數(shù)(library function)卻要求應(yīng)用先傳給它一個(gè)函數(shù),好在合適的時(shí)候調(diào)用,以完成目標(biāo)任務(wù)。這個(gè)被傳入的、后又被調(diào)用的函數(shù)就稱為回調(diào)函數(shù)(callback function)。打個(gè)比方,有一家旅館提供叫醒服務(wù),但是要求旅客自己決定叫醒的方法??梢允谴蚩头侩娫?,也可以是派服務(wù)員去敲門(mén),睡得死怕耽誤事的,還可以要求往自己頭上澆盆水。這里,“叫醒”這個(gè)行為是旅館提供的,相當(dāng)于庫(kù)函數(shù),但是叫醒的方式是由旅客決定并告訴旅館的,也就是回調(diào)函數(shù)。而旅客告訴旅館怎么叫醒自己的動(dòng)作,也就是把回調(diào)函數(shù)傳入庫(kù)函數(shù)的動(dòng)作,稱為登記回調(diào)函數(shù)(to register a callback function)
鏈接:https://www.zhihu.com/question/19801131/answer/27459821
來(lái)源:知乎