js小白之路(六) 閉包

2021-09-12 08:16:31 字數 751 閱讀 5732

閉包的作用是防止變數被篡改。實際的專案開發中,很有可能出現以下情景:多個人編寫專案的不同板塊,後來者極可能改掉專案中有實際作用的變數的值。為了避免這種情況的出現,我們需要採取一定的措施將變數「保護」起來,不能輕易被修改,這就利用了「閉包」。

var n=0;

function getcount()

console.log(getcount());//0.為了n不被篡改,將程式修改如下:

function getcount()

}console.log(getunique());//這個語句會報錯,因為函式getunique是區域性函式,外面無法訪問。

//解決方法:在函式gatcount中加上下面的語句

return getunique;//注意不能帶"()",帶了小括號函式就會執行,就相當於return return n++。

//完整的**如下:

function getcount()

return getunique;

}var c=getcount();//getcount()即return getunique,c就是乙個函式

console.log(c())

總結一下,所謂閉包就是函式使用了不屬於自己的區域性變數。作用:避免全域性汙染,變數放在全域性易被篡改。

閉包的問題:記憶體洩露。在普通的函式中,函式呼叫結束後就會被銷毀,但使用了閉包之後,由於n一直在用,函式getcount一直沒有被銷毀。所以閉包不能多用,使用過多會有記憶體洩露的問題。

Python之路 閉包

我們要給定乙個x,要求一條直線上x對應的y的值。公式是y kx b。我們需要用k,b來確定這條直線,則我們實現的函式應該有3個引數 def line k,b,x print k x b line 1,3,4 line 1,3,5 line 1,3,6 可以看到,我們每次修改x都要重新傳入k和b。我們...

js小白之路(十) this

this指向的是呼叫它的物件。注意!this的指向在函式定義的時候是確定不了的,只有在函式執行時才能確定this到底指誰,實際上this的最終指向的是呼叫它的物件。1 若乙個函式中有this,但它沒有被上一級的物件所呼叫,則this指向的就是window 2 若乙個函式中有this,這個函式有被上一...

python之路 閉包函式

閉包 def func name eva definner print name 閉包函式 內部函式包含對外部作用域而非全域性作用域名字的引用,該內部函式成為閉包函式。函式內部定義的函式稱為內部函式 由於有了作用域的關係,我們就不能拿到函式內部的變數和函式了。如果我們就是想拿怎麼辦呢?返回呀!我們都...