JavaScript作用域鏈

作用域時(shí)變量與函數(shù)的可訪(fǎng)問(wèn)范圍。全局變量擁有全局作用域,局部變量是在函數(shù)體內(nèi)聲明而且只作用在函數(shù)體內(nèi)部以及該函數(shù)體的子函數(shù)的變量。
javascript中每個(gè)函數(shù)的運(yùn)行都會(huì)擁有自己的執(zhí)行環(huán)境,每個(gè)執(zhí)行環(huán)境都擁有一個(gè)位置來(lái)存儲(chǔ)這個(gè)環(huán)境中定義的函數(shù)與變量。當(dāng)此函數(shù)執(zhí)行完之后,該環(huán)境被銷(xiāo)毀,其中的變量與函數(shù)定義也銷(xiāo)毀,這就稱(chēng)為一個(gè)作用域。
作用域鏈就是當(dāng)函數(shù)調(diào)用時(shí)的作用域連接。當(dāng)函數(shù)調(diào)用時(shí)候會(huì)創(chuàng)建函數(shù)作用域?qū)ο?也叫做活動(dòng)對(duì)象)AO ,而函數(shù)執(zhí)行結(jié)束這個(gè)東西就會(huì)被釋放。這個(gè)東西保存著所有的函數(shù)內(nèi)部的變量 (注意,形參,arguments 都被活動(dòng)對(duì)象保存著 但是 arguments保存的是 全部實(shí)參),這個(gè)時(shí)候活動(dòng)對(duì)象 AO就會(huì)進(jìn)行連接,就叫做作用域鏈。
整個(gè)作用域鏈的本質(zhì)是一個(gè)指向變量對(duì)象的指針列表。作用域鏈的最前端,始終是當(dāng)前正在執(zhí)行的代碼所在環(huán)境的變量對(duì)象。作用域鏈的用途就是保證對(duì)變量與函數(shù)的有序訪(fǎng)問(wèn),作用域鏈讓javascript在查找變量時(shí)從自身函數(shù)定義開(kāi)始由內(nèi)向外查找,如果當(dāng)前函數(shù)中找不到變量聲明,就在當(dāng)前函數(shù)的創(chuàng)建的域中查找,以此向外查找直到找到最外層的全局變量。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容