1.什麼是閉包
1)官方解釋
乙個擁有多個變數和繫結了這些變數的環境的表示式(一般是乙個函式)。因而這些變數也是該表示式的一部分。
我的理解:所謂的閉包就是連線函式內部和函式外部的一座橋梁。使得在外部也可以訪問到函式內部的變數。
2)閉包的特點
a:作為乙個函式變數的乙個引用,當函式返回時,其處於啟用狀態。
b:乙個閉包就是當乙個函式返回時,乙個沒有釋放資源的棧區。
2.閉包的用途
a:讀取函式內部變數
function people(name)
}var job = new people();
job();
解釋:正如上述的**所看到的,name是定義在people中的函式,是函式people中的區域性變數,而我們在外部是無法訪問到的,可是people函式返回了乙個內部函式,而這個內部函式是對變數name的乙個引用,這就形成了乙個閉包,所以在外部也能夠訪問到people函式的內部變數(特點一);正如上述**所看到的,假設name在函式people呼叫完後不能再訪問的話,則將被釋放。而在本例中卻被還有乙個函式所返回,所以還會包括在棧中(特點二)。
b:儲存變數始終在記憶體中
這也是閉包的不利處之所在地,由於閉包會使得函式中的變數儲存在記憶體中,記憶體消耗非常大,所以不能濫用閉包。否則會造成網頁載入緩慢問題等,解決辦法就是在退出函式之前,來銷毀不使用的區域性變數。
3.思考題
1)樣例1
function test1()
}test2();//是錯誤的。作用域在test1,外部無法訪問到
2)改動後
function test1()
return test2; //改動操作例如以下
}var obj = test1();
obj();//返回1
obj();//返回2
var obj2 = test1();
obj2();//返回1
obj2();//返回2
4.小結
以上就是對閉包的所有理解。簡單的一句話:閉包就是搭建外部函式與內部函式的橋梁。
上述僅僅是對閉包的一點點了解。有疑問之處,還請多多指正。
怎樣用javascript關閉本視窗
大家都知道window.close 是用來關閉視窗的,而且ie和firefox都是支援的。為了實現使用者對瀏覽器的絕對控制,ie中用close關閉非open開啟的視窗時回彈出乙個對話方塊詢問使用者,怎麼去掉這個框呢,請看下面的 function winclose 在window.close之前加上w...
JavaScript閉包原理分析
寫了幾個小例子揭示js中閉包的本質,適合自己執行後分析。html檔案 01 2345 什麼是閉包 js function 解決方案一 借用dom元素的屬性儲存序號i for var i 0 i 6 i 解決方案二 利用iife將i作為引數傳遞給內部函式 for var i 0 i 6 i i 錯誤方...
Head s分析 4 關閉CACHE
快樂蝦 lights hb165.com 本文適用於 adi bf561 dsp uclinux 2008r1.5 rc3 移植到vdsp5 visual dsp 5.0 update 5 turn off the icache p0.l lo imem control p0.h hi imem c...