使用閉包的注意點

2022-08-13 01:27:20 字數 914 閱讀 4176

1.對捕獲的變數只是個引用,不是複製;

function

f()

num++;

g();

//當函式g()第一次被執行時,f.le裡num=2;

} f();

//彈出2;說明彈出的num是對f.le裡num的引用,而不是複製

2.父函式每呼叫一次,

都會建立乙個新的詞法環境,會產生不同的閉包;

function

f()

}var result1= f();//

f()第一次被呼叫,建立了乙個新的詞法環境 result1.scope => f.le

result1();//2

result1();//

3var result2 = f();//

f()第二次被呼叫,又建立了乙個新的詞法環境 result2.scope => f.le

result2();//2

result2();//

3

3.迴圈中問題

<

div

id="1"

>1

div>

<

div

id="2"

>2

div>

<

div

id="3"

>3

div>

for(var i = 0;i<=3;i++)

}

應用閉包

var

i;

for(i =1;i<=3;i++)

})(i);

//迴圈第一次的時候,i=1,立即呼叫,產生乙個閉包,將i作為引數傳入,依次

}

什麼是閉包?為什麼使用閉包?閉包的缺點?

閉包 即重用乙個變數,又保護變數不被汙染的一種機制。為什麼使用閉包 全域性變數和區域性變數都具有不可兼得的優缺點。全域性變數 優 可重用,缺 易被汙染。區域性變數 優 僅函式內可用,不會被汙染。缺 不可重用 何時使用 只要即重用乙個變數,又保護變數不被汙染時。如何 3步 1.用外層函式包裹要保護的變...

Scala 閉包的使用

當前內容主要用於本人學習和複習,當前內容主要為scala中的閉包 當前內容借鑑 菜鳥教程 閉包是乙個函式,返回值依賴於宣告在函式外部的乙個或多個變數。閉包通常來講可以簡單的認為是可以訪問乙個函式裡面區域性變數的另外乙個函式。1.函式內部呼叫函式外部的變數,並返回值 閉包就是乙個匿名函式的表示式中使用...

Python的閉包使用

當函式存在巢狀,並且子函式引用了父函式中的變數,可以訪問這些變數的作用域就形成了閉包,但是如果子函式沒有訪問父函式中的變數,就不存在閉包.def count fs for i in range 1,4 def f return i i return fsf1,f2,f3 count f1 f2 f3...