#一.匿名函數和閉包的概念 ###1.1匿名函數 匿名函數在編程語言中出現的比較早,最先出如今Lisp語言中,隨後不少的編程語言都開始有這個功能了, 目前使用比較普遍的Javascript以及C#,PHP直到5.3纔開始真正支持匿名函數
。編程
什麼是匿名函數閉包
匿名函數是一類
不須要指定標示符
,而又能夠被調用的函數或子例程,匿名函數能夠方便的做爲參數傳遞給其餘函數, 最多見應用是做爲回調函數編程語言
###1.2. 閉包(Closure) 說到匿名函數,就不得不提到閉包了,閉包是詞法閉包(Lexical Closure)的簡稱,是引用了自由變量的函數
, 這個被應用的自由變量將和這個函數一同存在,即便離開了建立它的環境也同樣,因此閉包也可認爲是有函數和與其相關引用組合而成的實體。函數
註解,這個自由變量你在外部建立的的,外部多是函數或其餘。code
在一些語言中,在函數內定義另外一個函數的時候,若是內部函數引用到外部函數的變量,則可能產生閉包。在運行外部函數時, 一個閉包就造成了。ip
這個詞和匿名函數很容易被混用,其實這是兩個不一樣的概念,這多是由於不少語言實現匿名函數的時候容許造成閉包。回調函數