0、一句話定義閉包,子函數能夠定義父函數的局部變量php
一、幾個關鍵字閉包
define 定義宏(C語言),定義常量(php)函數
static 定義至關於位置在函數內的全局變量(生命週期與函數定義域無關),但只對函數可見,函數可改變其值
spa
const 定義常量(PHP 5.3.0+)code
二、php使用靜態變量:
生命週期
<?php function add(){ static $n = 0; $n++; echo $n . '<br />'; } add();//輸出 1 add();//輸出 2
三、js使用閉包內存
function f1(){ var n=0; function f2(){ n++; console.log(n); } return f2; } var add=f1(); add();//輸出 1 add();//輸出 2 //閉包兩大特色:一、訪問局部變量,二、一直保存在內存中
四、我的js閉包的理解,歡迎斧正io
一、因爲js無法像通常語言C++,PHP等使用static達到函數內全局變量的效果,故使用閉包的一直保存在內存的特性達到了這個效果,如上面php和js代碼的效果
console
二、閉包的特色使函數擁有了類的感受,訪問局部變量比如訪問私有屬性,閉包至關於類的公共函數,調用外部函數比如類實例化,始終保持在內存中比如類具備全局的生命週期,bigger感受瞬間提升了。
function