1. 程式人生 > 其它 >JavaScript高階之prototype和Number

JavaScript高階之prototype和Number

匿名函式也叫閉包函式,

什麼是閉包?閉包是可以有自由變數的程式碼塊;這些變數不在這個程式碼內或者全域性的其他地方定的,是在定義程式碼塊的環境中定義,也就是區域性變數。“閉包” 這個詞來源於以下兩者的結合:要執行的程式碼塊和為自由變數提供繫結的計算環境。由於自由變數被包含在程式碼塊中,這些自由變數以及它們引用的物件沒有被釋放。 其實我們可以通俗的說:子函式可以使用父函式中的區域性變數,這種行為就叫做閉包。理論上講,閉包和匿名函式是不同的概念,但是 PHP 將其視作相同的概念,提到閉包時,意思也就是就是匿名函式,講匿名函式,說的也就是閉包。

也就是說沒有函式名的函式。PHP 可以建立一個沒有名稱的函式,匿名函式大多會用在回撥函式中。

匿名函式可以直接把賦數賦值給變數,匿名函式仍然是函式,可以傳入引數,直接把賦數賦值給變數,呼叫變數即為呼叫函式。

建立一個匿名變數的語法結構如下:

1 2 3 function (引數列表) {     ... }

匿名函式和普通函式是非常相似的,它可以有返回值,也可以接受引數,不同的是匿名函式會在宣告時省略函式名。

示例如下:

1 2 3 4 5 6 <?php     $a = function (){         return '好好學習,天天向上';     };     echo $a(); ?>

通過上面的例項可以看出,匿名函式是當作變數的值來使用的,這時候PHP會自動把這種表示式轉換為內建類表示式,把一個closure賦值給一個變數的方式與普通的變數賦值語法是一樣的,在最後也要加上";"(分號)。

接下來,看兩種結合式的匿名函式

  • 變數函式式的匿名函式

1 2 3 4 5 6 7 8 <?php $a = function($b) {  echo $b.'好好學習'; }; $a('福如東海'); $a('壽比南山'); ?>
  • 回撥式的匿名函式

在我們時實際使用中,時常將匿名函式當作函式或者方法的回撥使用,不止回撥函式,在很多的PHP內侄函式中都會用到匿名函式,示例程式碼如下:

1 2 3 4 5 6 7 8 <?php     $a   = [1,2,3,4,5,6];     $b = array_map
(function ($c) {         return $c*$c;     }, $a);     echo '<pre>';     print_r($b); ?>