摘要:上一章執(zhí)行上下文變量提升函數(shù)聲明傳送門本次我們主要講講變量作用域和閉包變量作用域顧名思義變量起作用的范圍。則是局部變量,只能在函數(shù)中使用。閉包則能長(zhǎng)久保存變量,又不會(huì)污染。舉例子定義外層函數(shù),封裝被保護(hù)的局部變量。
上一章 JS執(zhí)行上下文、變量提升、函數(shù)聲明 傳送門:https://segmentfault.com/a/11...
本次我們主要講講變量作用域和閉包
變量作用域:
顧名思義:變量起作用的范圍。
變量分為全局變量和局部變量。
全局變量:在任何地方都能用,在所有函數(shù)之外。
局部變量:只能在定義它的函數(shù)中,以及它的子函數(shù)中使用。
當(dāng)前作用域沒(méi)有定義的變量,稱為自由變量。
舉例子:
dsfg
在上述例子中,g是全局變量,不存在于任何函數(shù)中,能在任何地方使用。
p則是局部變量,只能在fn函數(shù)中使用。在外部使用則會(huì)報(bào)錯(cuò)。
作用域鏈:
函數(shù)的變量在尋找作用域時(shí),不看在哪執(zhí)行,只看在哪定義。
舉例子:
dsfg
以變量a來(lái)解析,上述例子中體現(xiàn)的作用域鏈。當(dāng)執(zhí)行console.log(a)時(shí),先在fn2中尋找變量a,找不到則去到fn2的父級(jí)fn1中尋找,也找不到。再到fn1的父級(jí)中尋找,也就是全局變量中尋找,終于找到了。像這樣一層一層向上查找,就叫變量作用域鏈。
如果在其中任何一層找到了,則不會(huì)繼續(xù)向上查找。
閉包:
下個(gè)定義:可以訪問(wèn)另一個(gè)函數(shù)作用域變量的函數(shù)。所以閉包其實(shí)是個(gè)函數(shù)。
為什么要用閉包呢?
局部變量無(wú)法共享和長(zhǎng)久的保存,全局變量則很容易造成變量污染。閉包則能長(zhǎng)久保存變量,又不會(huì)污染。
閉包特點(diǎn):占用更多內(nèi)存,不容易被釋放。
閉包使用場(chǎng)景:1.函數(shù)作為返回值(retrun 一個(gè)函數(shù))
2.函數(shù)作為參數(shù)傳遞到另一個(gè)函數(shù)中。
舉例子:
lalala
1.定義外層函數(shù),封裝被保護(hù)的局部變量。
2.定義內(nèi)層函數(shù),執(zhí)行對(duì)外部函數(shù)的變量操作。
3.外層函數(shù)返回內(nèi)層函數(shù)的對(duì)象,且外層函數(shù)被調(diào)用時(shí),結(jié)果保存在一個(gè)全局變量中。
執(zhí)行f1()時(shí),a在當(dāng)前函數(shù)中未定義,往父級(jí)查找fn中a=100,所以a=100;
(函數(shù)變量作用域不看在哪執(zhí)行,只看在哪定義)
好啦好啦,jS三座大山翻過(guò)兩座了,還剩一個(gè)異步,單線程~
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/114113.html
摘要:上一章執(zhí)行上下文變量提升函數(shù)聲明傳送門本次我們主要講講變量作用域和閉包變量作用域顧名思義變量起作用的范圍。則是局部變量,只能在函數(shù)中使用。閉包則能長(zhǎng)久保存變量,又不會(huì)污染。舉例子定義外層函數(shù),封裝被保護(hù)的局部變量。 上一章 JS執(zhí)行上下文、變量提升、函數(shù)聲明 傳送門:https://segmentfault.com/a/11... 本次我們主要講講變量作用域和閉包變量作用域:顧名思義:...
摘要:上一章執(zhí)行上下文變量提升函數(shù)聲明傳送門本次我們主要講講變量作用域和閉包變量作用域顧名思義變量起作用的范圍。則是局部變量,只能在函數(shù)中使用。閉包則能長(zhǎng)久保存變量,又不會(huì)污染。舉例子定義外層函數(shù),封裝被保護(hù)的局部變量。 上一章 JS執(zhí)行上下文、變量提升、函數(shù)聲明 傳送門:https://segmentfault.com/a/11... 本次我們主要講講變量作用域和閉包變量作用域:顧名思義:...
摘要:代碼在執(zhí)行之前會(huì)先全局中變量提升函數(shù)聲明。函數(shù)的執(zhí)行上下文,也就是在這個(gè)函數(shù)范圍內(nèi)找到函數(shù)執(zhí)行上下文中函數(shù)范圍內(nèi),所有用聲明的變量。函數(shù)執(zhí)行時(shí),按照?qǐng)?zhí)行位置查找變量作用域只會(huì)向上查找。下一回變量作用域與閉包 上一章:JS的數(shù)據(jù)類型 傳送門:https://segmentfault.com/a/11... 好!話不多少,我們就開(kāi)始吧。對(duì)變量提升和函數(shù)聲明的理解,能讓你更清楚容易的理解,...
摘要:代碼在執(zhí)行之前會(huì)先全局中變量提升函數(shù)聲明。函數(shù)的執(zhí)行上下文,也就是在這個(gè)函數(shù)范圍內(nèi)找到函數(shù)執(zhí)行上下文中函數(shù)范圍內(nèi),所有用聲明的變量。函數(shù)執(zhí)行時(shí),按照?qǐng)?zhí)行位置查找變量作用域只會(huì)向上查找。下一回變量作用域與閉包 上一章:JS的數(shù)據(jù)類型 傳送門:https://segmentfault.com/a/11... 好!話不多少,我們就開(kāi)始吧。對(duì)變量提升和函數(shù)聲明的理解,能讓你更清楚容易的理解,...
閱讀 1811·2021-10-09 09:44
閱讀 3382·2021-09-28 09:35
閱讀 1372·2021-09-01 10:31
閱讀 1658·2019-08-30 15:55
閱讀 2697·2019-08-30 15:54
閱讀 923·2019-08-29 17:07
閱讀 1371·2019-08-29 15:04
閱讀 2001·2019-08-26 13:56