JavaScript,目前對于執(zhí)行環(huán)境和作用域鏈的理解
什么是作用域鏈?
要講作用域鏈就得先講執(zhí)行環(huán)境。
每個函數(shù)都有自己的執(zhí)行環(huán)境,每個執(zhí)行環(huán)境都有與之關聯(lián)的變量對象,這個變量對象保存了這個執(zhí)行環(huán)境中定義的變量和函數(shù)。
當執(zhí)行流進入一個函數(shù)時就會將函數(shù)的執(zhí)行環(huán)境推入到環(huán)境棧中,當函數(shù)執(zhí)行完畢后推出,然后將控制權交給前一個執(zhí)行環(huán)境。
當代碼在執(zhí)行環(huán)境中執(zhí)行時,就會創(chuàng)建作用域鏈,作用域鏈用于保證執(zhí)行環(huán)境可以訪問的變量和函數(shù)的有序訪問。
作用域鏈的最前端保存的是當前執(zhí)行環(huán)境的變量對象,下一個變量來自包含環(huán)境的變量對象,再下一個來自下一個包含環(huán)境的變量對象,直至全局執(zhí)行環(huán)境的變量對象。