分析javascript關閉

2021-09-07 01:39:02 字數 1321 閱讀 6152

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