1 回答

TA貢獻(xiàn)1779條經(jīng)驗(yàn) 獲得超6個(gè)贊
這個(gè)叫做作用域鏈 scope chain
。
每當(dāng) JavaScript 執(zhí)行一個(gè)函數(shù)時(shí),都會(huì)創(chuàng)建一個(gè)作用域?qū)ο螅╯cope object),用來(lái)保存在這個(gè)函數(shù)中創(chuàng)建的局部變量。它和被傳入函數(shù)的變量一起被初始化。這與那些保存的所有全局變量和函數(shù)的全局對(duì)象(global object)類(lèi)似,但仍有一些很重要的區(qū)別,第一,每次函數(shù)被執(zhí)行的時(shí)候,就會(huì)創(chuàng)建一個(gè)新的,特定的作用域?qū)ο螅坏诙?,與全局對(duì)象(在瀏覽器里面是當(dāng)做 window 對(duì)象來(lái)訪(fǎng)問(wèn)的)不同的是,你不能從 JavaScript 代碼中直接訪(fǎng)問(wèn)作用域?qū)ο?,也沒(méi)有可以遍歷當(dāng)前的作用域?qū)ο罄锩鎸傩缘姆椒ā?/p>
作用域?qū)ο蠼M成了一個(gè)名為作用域鏈(scope chain)的鏈。它類(lèi)似于原形(prototype)鏈一樣,被 JavaScript 的對(duì)象系統(tǒng)使用。
一個(gè)閉包就是一個(gè)函數(shù)和被創(chuàng)建的函數(shù)中的作用域?qū)ο蟮慕M合。
添加回答
舉報(bào)