所謂的閉包就是一個擁有許多變數和綁定了這些變數的環境的表達式(通常是一個函數),因而這些變數也是該表達式的一部分。
我這邊的理解是:其實在js中所有的function方法其實都可以算是閉包,簡單來說也可以理解為是嵌套function方法的使用:
如下面的程式碼範例:
function run(){ var a=10; return function(){ a++; console.log(a); } } var foo=run(); foo();//11 foo();//12 foo();//13
#:此時的foo的值就等於run( )函數的回傳值,foo函數就是一個閉包;
1)執行的流程是先呼叫foo()方法,foo()這個方法會找到run()方法裡面的回傳函數方法,這個當返回函數方法會指向run()方法裡面的a變量,然後再執行foo()時,會輸出11;
2)在上面的例子中,由於閉包的存在使得函數run回傳後,run()中的a總是存在,這樣每次執行foo(),a都是自加1後console出a的值。
相關推薦:
#以上是詳解Javascript的閉包工作原理的詳細內容。更多資訊請關注PHP中文網其他相關文章!