首先我們來看看一道題
首先可以看到上述題目有兩個函式,乙個函式包裹著乙個函式
當new person()的時候 person()函式開始被定義 產生乙個go{} 代表全域性
乙個ao代表本身
當執行this.say=sss的時候,sss()函式會被定義但不會被執行,被定義的時候就儲存了person()的所有勞動成果,operson.say()就變成了sss() 那麼ao和go就被sss函式所儲存下來了
ao{}
ao sss函式自增會+1 a=1;
go{}
那麼此時在執行sss函式的時候,a++的a在sss函式找不到,那麼sss就會去person函式找a的變數,因為a的變數為0所以通過sss函式的自增就變成了a=1被儲存了下來,此時sss的ao{}執行完就銷毀了,當再次執行sss函式的時候,那麼它所儲存的person函式的ao中的a還是為1,所以第二次a=2。
最終結果是121
javascript閉包詳解
下面先看乙個例子,在不執行的情況下推測一下返回結果.function t1 return t2 var temp t1 var age 99 temp 在學習了作用域之後也許會分析結果是99,實際上是20.下面對其一一分析 在大部分語言中,t1被呼叫執行,則申請記憶體並把其區域性變數push入棧。t...
javascript閉包使用
之前看到一段 很是不能理解,然後就查詢資料並且找網路上得大牛請教,最後弄懂了這段 然後就拿出來總結一下。先來看一段 var arrtest for var i 0 i 3 i arrtest function function function console.log arrtest 0 tostr...
javaScript閉包理解
以下是樓主的見解,如有錯誤請幫忙矯正。以下是是乙個簡單的閉包例子 function creatfunc var myfunc creatfunc alert myfunc 變數variable是乙個閉包,閉包的生命週期一般為呼叫閉包的物件為空 null 時結束。舉乙個複雜點的例子 var singl...