《JavaScript程序設(shè)計(jì)》課件-項(xiàng)目3-3 閉包函數(shù)和預(yù)解析_第1頁
《JavaScript程序設(shè)計(jì)》課件-項(xiàng)目3-3 閉包函數(shù)和預(yù)解析_第2頁
《JavaScript程序設(shè)計(jì)》課件-項(xiàng)目3-3 閉包函數(shù)和預(yù)解析_第3頁
《JavaScript程序設(shè)計(jì)》課件-項(xiàng)目3-3 閉包函數(shù)和預(yù)解析_第4頁
《JavaScript程序設(shè)計(jì)》課件-項(xiàng)目3-3 閉包函數(shù)和預(yù)解析_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

JavaScript程序設(shè)計(jì)20211課程導(dǎo)入2任務(wù)導(dǎo)入3知識(shí)講解4任務(wù)實(shí)施項(xiàng)目3-1作用域和閉包函數(shù)5任務(wù)總結(jié)知識(shí)回顧任務(wù)導(dǎo)入知識(shí)講解任務(wù)實(shí)施任務(wù)總結(jié)函數(shù)表達(dá)式的定義有位置要求嗎?箭頭函數(shù)怎么表示?回調(diào)函數(shù)的功能是什么?提問知識(shí)回顧任務(wù)導(dǎo)入知識(shí)講解任務(wù)實(shí)施任務(wù)總結(jié)任務(wù)重難點(diǎn)對(duì)比變量作用域練習(xí)閉包函數(shù)重點(diǎn):變量的作用域作用域鏈閉包函數(shù)預(yù)解析知識(shí)回顧任務(wù)導(dǎo)入知識(shí)講解任務(wù)實(shí)施任務(wù)總結(jié)作用域

1.1

作用域的分類變量需要在它的作用范圍內(nèi)才可以被使用,這個(gè)作用范圍稱為變量的作用域,JavaScript根據(jù)作用域使用范圍的不同,劃分如下:全局變量:不在任何函數(shù)內(nèi)聲明的變量(顯式定義)或在函數(shù)內(nèi)省略var聲明的變量(隱式定義)都稱為全局變量局部變量:在函數(shù)體內(nèi)利用var關(guān)鍵字定義的變量稱為局部變量塊級(jí)變量:ES6提供的let關(guān)鍵字聲明的變量稱為塊級(jí)變量1.作用域demo.js文件函數(shù)含有{},如for函數(shù)作用域全局作用域塊級(jí)作用域知識(shí)回顧任務(wù)導(dǎo)入知識(shí)講解任務(wù)實(shí)施任務(wù)總結(jié)作用域

1.2

全局變量和局部變量?jī)烧叩膮^(qū)別:

在全局作用域下,添加或省略var關(guān)鍵字都可以聲明全局變量,全局變量在瀏覽器關(guān)閉頁面的時(shí)候才會(huì)銷毀,比較占用內(nèi)存資源在函數(shù)中,添加var關(guān)鍵字聲明的變量是局部變量,省略var關(guān)鍵字時(shí),如果變量在當(dāng)前作用域下不存在,會(huì)自動(dòng)向上級(jí)作用域查找變量。局部變量在函數(shù)執(zhí)行完成后就會(huì)銷毀,比較節(jié)約內(nèi)存資源知識(shí)回顧任務(wù)導(dǎo)入知識(shí)講解任務(wù)實(shí)施任務(wù)總結(jié)作用域在開發(fā)中若要保留局部變量的值,可以通過以下兩種方式實(shí)現(xiàn)://第1種方式:利用return返回functiontest(num){num=num+1;returnnum;}varnum=test(24);console.log(num);//輸出結(jié)果:25//第2種方式:利用全局變量保存varmemory;functiontest(num){memory=num+1;}test(24);console.log(memory);//輸出結(jié)果:25知識(shí)回顧任務(wù)導(dǎo)入知識(shí)講解任務(wù)實(shí)施任務(wù)總結(jié)作用域

1.3

作用域鏈作用域鏈:當(dāng)在一個(gè)函數(shù)內(nèi)部聲明另一個(gè)函數(shù)時(shí),內(nèi)層函數(shù)只能在外層函數(shù)作用域內(nèi)執(zhí)行,在內(nèi)層函數(shù)執(zhí)行的過程中,若需要引入某個(gè)變量,首先會(huì)在當(dāng)前作用域中尋找,若未找到,則繼續(xù)向上一層級(jí)的作用域中尋找,直到全局作用域,稱這種鏈?zhǔn)降牟樵冴P(guān)系為作用域鏈。知識(shí)回顧任務(wù)導(dǎo)入知識(shí)講解任務(wù)實(shí)施任務(wù)總結(jié)作用域全局作用域vari=10;fn1函數(shù)fn2函數(shù)alert(i);作用域鏈符號(hào)含義參考F:表示向上查找N:沒有找到Y(jié):找到NFNFY知識(shí)回顧任務(wù)導(dǎo)入知識(shí)講解任務(wù)實(shí)施任務(wù)總結(jié)閉包函數(shù)2.閉包函數(shù)

2.1

什么是閉包函數(shù)所謂“閉包”指的就是有權(quán)訪問另一函數(shù)作用域內(nèi)變量(局部變量)的函數(shù)。主要的兩點(diǎn)用途如下:可以在函數(shù)外部讀取函數(shù)內(nèi)部的變量可以讓變量的值始終保持在內(nèi)存中注意:由于閉包會(huì)使得函數(shù)中的變量一直被保存在內(nèi)存中,內(nèi)存消耗很大,所以閉包的濫用可能會(huì)降低程序的處理速度,造成內(nèi)存消耗等問題。知識(shí)回顧任務(wù)導(dǎo)入知識(shí)講解任務(wù)實(shí)施任務(wù)總結(jié)閉包函數(shù)

2.2

閉包函數(shù)的實(shí)現(xiàn)閉包的常見創(chuàng)建方式就是在一個(gè)函數(shù)內(nèi)部創(chuàng)建另一個(gè)函數(shù),通過另一個(gè)函數(shù)訪問這個(gè)函數(shù)的局部變量可以在函數(shù)外部讀取函數(shù)內(nèi)部的變量。functionfn(){vartimes=0;varc=function(){return++times;};returnc;}varcount=fn();//保存fn()返回的函數(shù),count就是一個(gè)閉包c(diǎn)onsole.log(count()); //輸出結(jié)果:1console.log(count()); //輸出結(jié)果:2console.log(count()); //輸出結(jié)果:3示例代碼知識(shí)回顧任務(wù)導(dǎo)入知識(shí)講解任務(wù)實(shí)施任務(wù)總結(jié)預(yù)解析JavaScript解析器在運(yùn)行JavaScript代碼的時(shí)候會(huì)進(jìn)行預(yù)解析,也就是提前對(duì)代碼中的var變量聲明和function函數(shù)聲明進(jìn)行解析,然后再去執(zhí)行其他的代碼。//輸出結(jié)果:undefinedconsole.log(num);varnum=10;//報(bào)錯(cuò),提示num2isnotdefinedconsole.log(num2);0varnum;//undefinedconsole.log(num);num=10;var預(yù)解析3.預(yù)解析知識(shí)回顧

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論