執(zhí)行環(huán)境
執(zhí)行環(huán)境是JavaScript中最為重要的概念之一。執(zhí)行環(huán)境定義了變量或函數(shù)有權(quán)訪問的其他數(shù)據(jù),決定了他們各自的行為。每個執(zhí)行環(huán)境都有一個與之關(guān)聯(lián)的變量對象,環(huán)境中定義的所有變量核函數(shù)保存在這個對象中。雖然編寫的代碼無法訪問這個對象,凡是解析器會在處理數(shù)據(jù)時在后臺用到他。
全局執(zhí)行環(huán)境是最外圍的一個執(zhí)行環(huán)境。在web瀏覽器中,全局執(zhí)行環(huán)境唄認為是window對象,因此所有的全局變量和函數(shù)是作為window對象的屬性和方法創(chuàng)建的。某個執(zhí)行環(huán)境中所有的代碼執(zhí)行完畢后,該環(huán)境被銷毀,保存在其中的所有變量和函數(shù)定義也隨之銷毀。
作用域鏈
當代碼在一個環(huán)境執(zhí)行時,會創(chuàng)建變量對象的一個作用域鏈,保證對執(zhí)行環(huán)境有權(quán)訪問的所有變量和函數(shù)的有序訪問。
函數(shù)在執(zhí)行的過程中,先從自己內(nèi)部找變量
如果找不到,再從創(chuàng)建當前函數(shù)所在的作用域去找, 以此往上