淺談js中的執行環境和執行環境對象


  什么是js的"執行環境",每當函數被調用的時候,就會產生一個新的執行環境,它是運行中的函數的意思,比方說運動員在奔跑的環境中,我們可以把運動員在奔跑的環境中,說成奔跑中的運動員,以此類推說成運行中的函數,行話叫”執行環境“。

  下面我們就以一個例子進行分析執行環境對象,以下是執行環境對象的第一輪

以上的這個參數和函數都已被聲明和賦值,並且局部變量已被聲明,這個就是第一輪,接下來就是要執行第二輪

由於在執行環境中可以調用函數,其中會有很多的深度,其中又會設計到很多比較復雜的函數調用以及作用域的問題,下面就以一段代碼簡要的談一下

<script>
var global_var;
first_function();
function first_function(){
     var first_var;
     second_function();  
}
function second_function(){
    var second_var;
}
second_function();
</script>

1:首先在調first_function,會在全局執行環境中創建一個新的執行環境,它可以訪問全局執行環境中的對象,還有在first_function中定義的局部變量。

2:在first_function()中調用second_function()時,很多人可能覺得這個既然這個second_function()是在first_function中的,所以就有可能訪問到first_function中的變量,但是這個是恰恰錯誤的,因為在定義函數的時候作用域鏈就固定了,其中second_function的定義不在first_function中,所以是無法訪問first_function中的變量的,盡管他是在其中被調用的。

3:當再次調用second_function時,其執行環境沒有權限訪問先前調用的second_function中的變量,因為實在不同的執行環境中,也就是說,在調用函數時,沒有權限訪問上一次被調用時所創建的局部變量,下一次調用該函數時,也沒有權限訪問這一次調用函數所創建的局部變量,也就是俗稱的不在作用域內。


免責聲明!

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



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