網上關于執行背景關系的文章有很多,關于什么是執行背景關系,很多文章說得很清晰,
我說一下自己的理解,
執行背景關系包含三個東西:
- VO
- this
- [[scope]]
為什么包含這三個東西呢?首先我們要明白,什么叫做執行背景關系,
執行背景關系,又叫做執行環境,那么,什么是環境呢?
維基百科是這樣解釋的:
環境是指相對并相關某項中心事物的周圍事物,
在我們的代碼中,比如每一個函式,就是一段可以執行的代碼,
這段可執行的代碼,就是這個所謂的中心事物,同一個函式,在不同的地方執行,輸出的結果是不一樣的,這個導致輸出結果不同的周圍事物,就是所謂的環境,
假如我們現在有如下一段代碼:
function doSomeThing(a){
console.log(a);
console.log(global);
console.log(this);
}
那么,當我們執行這一段代碼的時候,會首先輸出a的值,接著輸出全域物件,最后輸出this,
但是,這一段代碼在不同的地方執行,輸出的結果是不一樣的,
比如,當我們的入參a不同的時候,那么輸出的a就會是不同的,因此,變數就是一個環境,而所有的變數,我們統稱其為變數物件,也就是所謂的VO(variable object),
另外,在不同的地方,this的指向也是不同的,這是顯而易見的,也是我們前端需要重點掌握的一個知識點,
還有一個[[scope]],這就是作用域鏈,鏈接另一個執行環境的指標,
有了這三個東西,每一個函式就可以明確的知道,自己可以訪問到哪些變數,應該在什么樣的環境下執行,
這也就是為什么我們把它叫做執行環境、執行背景關系,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/115186.html
標籤:JavaScript
下一篇:京東小程式平臺,他來了
