91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

JavaScript作用域鏈是什么

發布時間:2022-01-20 09:39:51 來源:億速云 閱讀:322 作者:iii 欄目:web開發

本篇內容介紹了“JavaScript作用域鏈是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

JavaScript作用域鏈是什么

作用域

1.什么是作用域

簡單來說,作用域(英文:scope)是據名稱來查找變量的一套規則,可以把作用域通俗理解為一個封閉的空間,這個空間是封閉的,不會對外部產生影響,外部空間不能訪問內部空間,但是內部空間可以訪問將其包裹在內的外部空間。

2.[[Scopes]]屬性

在javascript中,每個函數都是一個對象,在對象中有些屬性我們可以訪問,有些我們是不能自由訪問的,[[Scopes]]屬性就是其中之一,這個屬性只能被JavaScript引擎讀取。

其實[[scope]]就是我們常說的作用域,其中存儲了作用域運行期的上下文集合。

在這里因為func.prototype.constructor和func指向同一個函數,所以在這里我們通過訪問函數func的原型對象來查看[[Scopes]]屬性

JavaScript作用域鏈是什么

3.作用域鏈

[[scope]]中存儲的執行期的上下文對象的集合,這個集合呈鏈式連接,我們把這種鏈式連接叫做作用域鏈。JavaScript正是通過作用域鏈來查找變量的,其查找方式是沿著作用域鏈的頂端依次向下查詢(在哪個函數內部查找對象,就在哪個函數作用域鏈中查找)

4.圖解查找變量原理

//以如下代碼為例說明JavaScript通過作用域鏈查找變量的原理**
function a() {
  function b() {
      var b = 123;
  }
  var a = 123;
  b();
}
var glob = 100;

1.當全局函數a()被定義時,作用域鏈如下

JavaScript作用域鏈是什么

函數的[[Scopes]]屬性指向作用域鏈對象,此時作用域鏈只有一個鍵值對,這個鍵值對指向全局對象,全局對象存儲了全局下可以訪問的東西,也就是最外層作用域,大家都可以訪問的。

2.當全局函數a()被激活調用時,作用域鏈如下

JavaScript作用域鏈是什么

此時作用域鏈能夠第一個訪問的是Activation Object中的鍵值對,如果沒有才訪問全局對象

3.函數a()中函數b被定義時,b的作用域鏈如下

JavaScript作用域鏈是什么

當b只是被定義沒有被調用時,b的作用域鏈和a是相同的

4.當函數a()中的函數b被激活調用時,作用域鏈如下

JavaScript作用域鏈是什么

作用域鏈最先指向函數b()的Activation Object,查找變量也是按作用域鏈順序訪問,找到就停止

“JavaScript作用域鏈是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

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

AI

苏州市| 仪征市| 德化县| 灵宝市| 河池市| 贺州市| 长泰县| 唐海县| 阿克苏市| 广宁县| 乌海市| 高州市| 贡山| 大田县| 象州县| 天全县| 兴安盟| 淮南市| 广元市| 仁怀市| 洛浦县| 三河市| 张家口市| 保定市| 浑源县| 阜新| 皮山县| 织金县| 海宁市| 玉龙| 吉隆县| 铜鼓县| 松江区| 青海省| 西林县| 海城市| 德庆县| 灯塔市| 北碚区| 象山县| 开封县|