04_函數(shù)

什么是函數(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)源:知乎

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 函數(shù) JavaScript語(yǔ)言將函數(shù)看作一種值,與其它值(數(shù)值、字符串、布爾值等等)地位相同。凡是可以使用值的地方...
    LeoCong閱讀 316評(píng)論 0 0
  • 1.Swift中函數(shù)的使用 函數(shù)的定義 外部參數(shù) _的使用 常見(jiàn)的 "_" 在for循環(huán)中 函數(shù)的默認(rèn)值 無(wú)返回值...
    思考的快與慢閱讀 572評(píng)論 0 2
  • 我們已經(jīng)接觸過(guò)函數(shù)(function)的參數(shù)(arguments)傳遞。當(dāng)時(shí)我們根據(jù)位置,傳遞對(duì)應(yīng)的參數(shù)。我們將接...
    L小橙子閱讀 407評(píng)論 0 0
  • 函數(shù)和方法的區(qū)別 1.函數(shù)屬于整個(gè)文件, 方法屬于某一個(gè)類, 方法如果離開(kāi)類就不行 2.函數(shù)可以直接調(diào)用, 方法必...
    Giurlo閱讀 183評(píng)論 0 0
  • 陰歷的2016馬上就要過(guò)去了,不知道新的一年又是什么樣子的。今天可是倒霉的一天,開(kāi)車(chē)被追尾,做飯被燙出泡,騎車(chē)被摔...
    小爪1002閱讀 220評(píng)論 0 0

友情鏈接更多精彩內(nèi)容