變量對象和活動對象有什么區別.


函數在創建過程中,並不是直接把函數渲染出來,而是一步步的渲染處理。

看下面的黑色圖片。

首先說一下,function的優先級會比var聲明高一些。

下面的圖片里,定義了test()函數,我們從test()的上下文來進行理解

 

函數一開始根據test()函數的屬性,來創建對應的變量對象。

VO:Variable Object 

把所有的函數生命放進現在聲明的變量對象中

然后把所有的變量聲明放進變量對象中

 

 

他們其實都是同一個對象,只是處於執行上下文的不同生命周期。不過只有處於函數調用棧棧頂的執行上下文中的變量對象,才會變成活動對象。

附加

 在函數里,先執行function的定義。這里有全局函數test()。當然首先建立arguments對象。

在test里有function,function的優先級比var的要高一些,先執行function

在創始階段 foo<foo reference > 

<>里面的這一塊是為后面的function准備好的地址。在發現有var,執行var bar:undefined

這里注意.

有兩個foo,此時規定 當var聲明的變量遇到同名屬性時,會跳過不會覆蓋

創建階段完成,進行執行階段,這里就是活動對象和變量對象的分界嶺了

end......


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM