執(zhí)行環(huán)境
函數(shù)都會創(chuàng)建的執(zhí)行環(huán)境,包括 變量對象,作用域鏈,上下文(this)。執(zhí)行環(huán)境定義了變量或函數(shù)有權訪問的其他數(shù)據(jù)。
變量對象(VO)
存儲被定義在執(zhí)行環(huán)境中的變量
變量對象內(nèi)容包括:
- 函數(shù)的形參
- var聲明的變量
- 函數(shù)聲明(不包括函數(shù)表達式)
全局環(huán)境中的變量對象
是全局對象自己
全局對象在進入任何執(zhí)行環(huán)境之前就已經(jīng)創(chuàng)建了的對象
函數(shù)環(huán)境的變量對象
是活動對象(AO),在進入函數(shù)執(zhí)行環(huán)境中被創(chuàng)建,它通過函數(shù)的arguments屬性初始化
作用域鏈
- 一個執(zhí)行環(huán)境的數(shù)據(jù)(變量、函數(shù)聲明和函數(shù)形參)作為屬性存儲在變量對象中。
- 同時也知道,變量對象在每次進入環(huán)境時創(chuàng)建,并填入初始值,值的更新出現(xiàn)在代碼執(zhí)行階段。
代碼在一個環(huán)境中執(zhí)行的時候,會創(chuàng)建變量對象的一個作用域鏈,作用域鏈的用途是保證對變量和函數(shù)的有序訪問。
本質:是一個指向變量對象的指針列表,它只引用但不實際包含變量對象。
一個作用域鏈包括父級變量對象(作用域鏈的頂部)、函數(shù)自身變量和活動對象
當查找標識符的時候,會從作用域鏈的活動對象部分開始查找,然后(如果標識符沒有在活動對象中找到)查找作用域鏈的頂部,循環(huán)往復,就像作用域鏈那樣。
參考
http://www.cnblogs.com/TomXu/archive/2012/01/16/2309728.html