var a = fun(0),把0傳入
fun(n,o)
中,那麼
n=0,
o=undifine,而
fun(n,o) return
了};,
所以a就等於};
所以a.fun(1)=function(1)=fun(1,0),所以會輸出0,
同樣a.fun(2)=function(2)=fun(2,0),輸出0,以此類推,
a.fun(3)
也輸出0
。所以最終輸出的結果為:undifine,
0,0,0
。再來看第二行,fun(0)輸出undifine,fun(0).fun(1)=a.fun(1)=fun(1,0)=};,輸出0
, fun(0).fun(1).fun(2)=function(2)=fun(2,1)=},輸出1,
以此類推,fun(0).fun(1).fun(2).fun(3),
最終按次序輸出的是:undifine,
0,1,2
。最後看第三行,var c = fun(0).fun(1),根據上面兩行的推理,輸出的是undifine,0。
c=},c.fun(2)=function(2),輸出1,
c.fun(3)=function(3),輸出的還是1,
所以第三行輸出的是:
undifine
,0, 1, 1
。
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...