最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

js中的閉包學習心得

來源:懂視網 責編:小采 時間:2020-11-27 22:20:08
文檔

js中的閉包學習心得

js中的閉包學習心得:閉包 按中文的意思就是關上一個包的意思。如果我們把函數的作用域當做是一個包的話,那這個詞很形象體現了它的作用 。函數的正常的執(zhí)行流程是當函數中的語句執(zhí)行完后,程序會自動銷毀這個函數的作用域,但是當一個函數中聲明了另一個函數,并且這個子函數執(zhí)行
推薦度:
導讀js中的閉包學習心得:閉包 按中文的意思就是關上一個包的意思。如果我們把函數的作用域當做是一個包的話,那這個詞很形象體現了它的作用 。函數的正常的執(zhí)行流程是當函數中的語句執(zhí)行完后,程序會自動銷毀這個函數的作用域,但是當一個函數中聲明了另一個函數,并且這個子函數執(zhí)行

閉包

按中文的意思就是關上一個包的意思。如果我們把函數的作用域當做是一個包的話,那這個詞很形象體現了它的作用 。函數的正常的執(zhí)行流程是當函數中的語句執(zhí)行完后,程序會自動銷毀這個函數的作用域,但是當一個函數中聲明了另一個函數,并且這個子函數執(zhí)行時存在引用父函數的變量,就會形成閉包,形象點說就相當于把父函數的作用域給關閉了起來,不讓程序去銷毀它。

例如:

function a() {
 var name = "xuxu";
 function b() {
 console.log(name);
 }
 // 此處產生閉包 
 b();
} 
a();

當函數可以記住并訪問它所在的作用域鏈時,就產生了閉包 當然,大部分的閉包都不是這么直觀的,因為子函數的調用是可以在父函數之外的,例如:

function a() {
 var name = "xuxu";
 function b() {
 console.log(name);
 }
 return b;
} 
var c=a();
// 此處產生閉包 此處的c函數其實就是a函數
c();

通過以上代碼,我們也可以看出一個閉包的好處,就是我們再全局作用域(此處是widow)下訪問到了局部作用域(a函數)的作用域的值,按正常的詞法作用域是無法這么做的,但是當我們使用閉包是就可以了。然后我們再看一點我們平時寫的比較多的:

function foo() {
 var a = 2;
 function baz() {
 // 2
 console.log( a ); 
 }
 bar( baz );
}
function bar(fn) {
// 大家快看呀,這就是閉包!
 fn(); 
}

又或者

var fn;
function foo() {
 var a = 2;
 function baz() {
 console.log( a );
 }
 // 將baz分配給全局變量
 fn = baz; 
}
function bar() {
 // 大家快看呀,這就是閉包!
 fn();
}
foo();
// 2
bar(); 

以上也是閉包,因此在函數內部調用子函數,或者通過何種手段將內部函數傳遞到所在的詞法作用域以外,它都會持有對原始定義作用域的引用,無論在何處執(zhí)行這個函數都會使用閉包。

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

js中的閉包學習心得

js中的閉包學習心得:閉包 按中文的意思就是關上一個包的意思。如果我們把函數的作用域當做是一個包的話,那這個詞很形象體現了它的作用 。函數的正常的執(zhí)行流程是當函數中的語句執(zhí)行完后,程序會自動銷毀這個函數的作用域,但是當一個函數中聲明了另一個函數,并且這個子函數執(zhí)行
推薦度:
標簽: js 體會 總結
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top