摘要:注意匿名函數(shù)自執(zhí)行只是產(chǎn)生閉包的一種情況,閉包是現(xiàn)象或者情形,不實用匿名函數(shù)自執(zhí)行也有很多情況產(chǎn)生閉包,所以而且根本就是兩回事兒,不能混淆。小測驗,你能看出下面的程序用了閉包嗎閉包在中使用。閉包無處不在,直接看的例子。
通過文你將學到:
概述1.閉包是怎么回事兒?
2.閉包的原理和在jquery中的應用
3.從一到面試題徹底理解閉包和垃圾回收機制
4.閉包在jquery中的應用
經(jīng)常聽到閉包這個詞兒,或者匿名函數(shù)自執(zhí)行,之類的。到底他們是一個東西嗎?
1.什么是閉包?? 我不想扣定義,直接上例子。
function parent(firstname){ return function(lastname){ console.log(firstname+"·屌·"+lastname); } } parent("尼古拉斯")("大彬哥");
看圖:
函數(shù)執(zhí)行完以后會銷毀(這里我就不談堆棧操作了理解圖就行了),然后各種變量會垃圾回收,而這里parent函數(shù)確實銷毀了,但是firstName這個參數(shù)并沒有垃圾回收,釋放內(nèi)存,依然在內(nèi)存中能夠被return里面的函數(shù)使用,好像return里面的函數(shù)把 父函數(shù)的那個資源給關(guān)閉在了自己的函數(shù)里面一樣,這個函數(shù)銷毀資源被關(guān)閉到子函數(shù)中依然能夠使用的現(xiàn)象叫做閉包。
注意匿名函數(shù)自執(zhí)行只是產(chǎn)生閉包的一種情況,閉包是現(xiàn)象或者情形,不實用匿名函數(shù)自執(zhí)行也有很多情況產(chǎn)生閉包,所以而且根本就是兩回事兒,不能混淆。
類比,在window系統(tǒng)中,你子文件夾中有使用的文件父文件夾是沒法刪除的。
2.實際應用,情況很多,先來一道面試題。function fn{ var arr = []; for(var i = 0;i<3;i++){ arr.push(function(){ console.log(i); }); } return arr; } var arrFn = fn(); arrFn[0]();//3 arrFn[1]();//3 arrFn[2]();//3
與這個類似的一個題是循環(huán)里面用事件,事件里面的i有問題,如下。
for(var i = 0;i還有一到非常愛考的面試題,
for(var i = 0;i<3;i++){ setTimeout(function(){ alert(i); }); }我只分析一個,其它的大家就會分析了。注意表象上粗略的理解就是 函數(shù)執(zhí)行一瞬間,并不會等定時器,但是這個說法并不對,因為第一個就說不通。好我給記大家進入內(nèi)部深入分析下過程。
記住一句話,函數(shù)定義壓入arr的時候并沒有執(zhí)行。
小測驗,你能看出下面的程序用了閉包嗎?
function show(){ var a = 12; setTimeout(function(){ console.log(a); },1000); }3.閉包在jquery中使用。
閉包無處不在,直接看jquery的例子。
$("#btn").click(function(){ var json = {}; ajax(url,function(data){ json =dada; }); });
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/82595.html
摘要:大家想想怎么做什么是匿名函數(shù)自執(zhí)行并如何在實際庫中應用匿名函數(shù)自執(zhí)行,注意,注意,只有這個名字和沒有其它名字,比如封閉空間,這個是為了讓大家好理解自己造的詞語。 通過本節(jié)課你將學到: 1.什么是函數(shù)表達式和函數(shù)聲明 2.first-class function 3.引用和復制的區(qū)別 4.函數(shù)傳參是怎么回事兒 5.關(guān)于函數(shù)的this和arguments 6.什么是匿名函數(shù)自執(zhí)行并如何在...
摘要:大彬哥版權(quán)所有翻錄必究尼古拉斯屌大彬哥群尼古拉斯屌大彬哥函數(shù)聲明函數(shù)表達式是不是簡單的讓人發(fā)指區(qū)別就一句話,函數(shù)聲明,可以在函數(shù)調(diào)用之后,因為有函數(shù)預解析。而函數(shù)表達式必須在調(diào)用之前。 通過前三課講解,大家應該能做到 1.手里有一份隨時能夠換工作自信的簡歷 2.知道了學習js的正確姿勢 3.理解了全局對象、全局上下文、知道有預解析同時做了至少50道面試題 4.能熟練的使用json構(gòu)建...
摘要:忍者級別的函數(shù)操作對于什么是匿名函數(shù),這里就不做過多介紹了。我們需要知道的是,對于而言,匿名函數(shù)是一個很重要且具有邏輯性的特性。通常,匿名函數(shù)的使用情況是創(chuàng)建一個供以后使用的函數(shù)。 JS 中的遞歸 遞歸, 遞歸基礎(chǔ), 斐波那契數(shù)列, 使用遞歸方式深拷貝, 自定義事件添加 這一次,徹底弄懂 JavaScript 執(zhí)行機制 本文的目的就是要保證你徹底弄懂javascript的執(zhí)行機制,如果...
javascript -- 回調(diào)函數(shù) 在高級語言層出不窮的年代, 各個語言都號稱有著一切皆為對象的自豪說法, 而 js 作為一門腳本語言卻相對于java等傳統(tǒng)面向?qū)ο笳Z言有很大的不同之處, 除了 js 詭異的繼承體系之外, 最令人著迷的一個特性就是回調(diào)函數(shù), 當然也有很多人對他詬病, 筆者認為 回調(diào)函數(shù) 和 異步 是js語言特性的兩大最為突出的店, 當然正如所有優(yōu)點需要滿足自我的需求, 這個世界...
閱讀 1075·2021-11-23 09:51
閱讀 2418·2021-09-29 09:34
閱讀 3158·2019-08-30 14:20
閱讀 1060·2019-08-29 14:14
閱讀 3188·2019-08-29 13:46
閱讀 1084·2019-08-26 13:54
閱讀 1641·2019-08-26 13:32
閱讀 1434·2019-08-26 12:23