摘錄 http://www.infoq.com/cn/articles/why-recommend-nodejs 部分內容
JavaScript是一種函數式編程語言,函數編程語言最重要的數學基礎是λ演算(lambda calculus) -- 即函數對象可以作為其他函數對象的輸入(參數)和輸出(返回值)。
函數運行時需要訪問函數定義時的上下文數據。并且javascript支持匿名函數。
JavaScript中一個函數也是一個對象。一個函數實例fn除了函數體的定義之外,我們仍然可以在這個函數對象實例之本身擴展其他屬性,如fn.a=1;
在每個JavaScript函數運行時,都有一個運行時內部對象稱為Execution Context,它包含如下Variable Object(VO,變量對象), Scope Chain(作用域鏈)和"this" Value三部分。如圖:

只要能明確的區(qū)分函數定義和函數運行兩個時機,那么閉包就是讓函數在運行時能夠訪問到函數定義時的所處作用域內的所有變量,或者說函數定義時能訪問到什么變量,那么在函數運行時通過相同的變量名一樣能訪問到。
posted on 2011-08-15 09:44
liucs 閱讀(327)
評論(0) 編輯 收藏 所屬分類:
Javascript