溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript中作用域鏈與執行環境是什么

發布時間:2020-12-03 10:07:44 來源:億速云 閱讀:174 作者:小新 欄目:web開發

小編給大家分享一下JavaScript中作用域鏈與執行環境是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

每一個函數存在一個[[Scope]]內部屬性,包含了一個函數被創建得作用域中對象得集合,這個集合為函數得作用域鏈。例如下面的全局函數:

fucntion add(num1, num2){
    var sum = num1 + num2;
    return sum;
}

當函數add被創建時,它的作用域鏈中便插入了一個對象變量,里面包含所有在全局范圍內定義的變量。

JavaScript中作用域鏈與執行環境是什么

函數add的作用域會在函數執行時用到,函數每次執行都會創建一個執行環境的內部對象,每個執行環境都有自己的作用域鏈。函數運行時,一個被稱為活動對象的新對象就為執行環境創建好了,里面包含了函數的所有局部變量,命名參數,參數集合以及this。假設執行var total = add(5,10),其對應的作用域鏈如下:

JavaScript中作用域鏈與執行環境是什么

函數執行過程中,變量的查找時從作用域頭部開始查找,如果找到就是使用改變量的值。如果找不到就繼續從作用域下一個對象查找,直到找到改變量。如過匹配不到,則為undefined。當頻繁使用全局變量時,可以先使用一個局部變量保存起來,之后直接訪問局部變量可以減少查找次數提高效率。例如:

function initUI(){
    var doc = document,
        bd = doc.body,
        links = doc.getElementsByTagName("a");
    ....
}

當函數執行完成,活動對象也會隨之銷毀。但閉包時,活動對象并不會銷毀。這也是為什么閉包占用內存大的原因。

以上是“JavaScript中作用域鏈與執行環境是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女