javascript 執(zhí)行環(huán)境,變量對象,作用域鏈

執(zhí)行環(huán)境

函數(shù)都會創(chuàng)建的執(zhí)行環(huán)境,包括 變量對象,作用域鏈,上下文(this)。執(zhí)行環(huán)境定義了變量或函數(shù)有權訪問的其他數(shù)據(jù)。

變量對象(VO)

存儲被定義在執(zhí)行環(huán)境中的變量

變量對象內(nèi)容包括:

  1. 函數(shù)的形參
  2. var聲明的變量
  3. 函數(shù)聲明(不包括函數(shù)表達式)

全局環(huán)境中的變量對象

是全局對象自己
全局對象在進入任何執(zhí)行環(huán)境之前就已經(jīng)創(chuàng)建了的對象

函數(shù)環(huán)境的變量對象

是活動對象(AO),在進入函數(shù)執(zhí)行環(huán)境中被創(chuàng)建,它通過函數(shù)的arguments屬性初始化

作用域鏈

  1. 一個執(zhí)行環(huán)境的數(shù)據(jù)(變量、函數(shù)聲明和函數(shù)形參)作為屬性存儲在變量對象中。
  2. 同時也知道,變量對象在每次進入環(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

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

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

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