javascript閉包經典面試題

2021-08-03 05:35:02 字數 900 閱讀 9147

首先第一行,先看

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...