JavaScript啊易,目前對于執(zhí)行環(huán)境和作用域鏈的理解
什么是作用域鏈吁伺?
要講作用域鏈就得先講執(zhí)行環(huán)境。
每個函數(shù)都有自己的執(zhí)行環(huán)境租谈,每個執(zhí)行環(huán)境都有與之關(guān)聯(lián)的變量對象篮奄,這個變量對象保存了這個執(zhí)行環(huán)境中定義的變量和函數(shù)。
當(dāng)執(zhí)行流進(jìn)入一個函數(shù)時就會將函數(shù)的執(zhí)行環(huán)境推入到環(huán)境棧中割去,當(dāng)函數(shù)執(zhí)行完畢后推出窟却,然后將控制權(quán)交給前一個執(zhí)行環(huán)境。
當(dāng)代碼在執(zhí)行環(huán)境中執(zhí)行時劫拗,就會創(chuàng)建作用域鏈间校,作用域鏈用于保證執(zhí)行環(huán)境可以訪問的變量和函數(shù)的有序訪問。
作用域鏈的最前端保存的是當(dāng)前執(zhí)行環(huán)境的變量對象页慷,下一個變量來自包含環(huán)境的變量對象憔足,再下一個來自下一個包含環(huán)境的變量對象,直至全局執(zhí)行環(huán)境的變量對象酒繁。