理解JavaScript中的作用域鏈
理解了作用域鏈,閉包就不難理解了,所以本文主要談一談我對(duì)作用域鏈的理解。
關(guān)于JavaScript中變量的作用域,全局變量在程序中始終都有定義。局部變量在聲明它的函數(shù)體內(nèi)以及其內(nèi)部所嵌套的函數(shù)內(nèi)始終是有定義的。那么JavaScript是如何管理這些全局變量和局部變量作用域的呢,這就涉及到了作用域鏈。
作用域鏈相當(dāng)于一個(gè)對(duì)象鏈表。鏈表的上的對(duì)象定義了這段script代碼中的變量。如果要查找一個(gè)變量x,則會(huì)從這個(gè)作用域鏈的當(dāng)前有權(quán)限訪問(wèn)的最底層對(duì)象開始找起,如果這個(gè)對(duì)象有一個(gè)名叫x的屬性,則直接使用這個(gè)屬性的值,如果沒(méi)有找到繼續(xù)向外層找其他的對(duì)象上是否有這個(gè)屬性,直到找到作用域鏈的尾部,如果還沒(méi)有,就返回undefined。
這里的“里層,外層”就是內(nèi)部函數(shù)對(duì)包裹它的函數(shù)是不可訪問(wèn)的,提前說(shuō)明一下有利于之后的理解。
在如下所示的JavaScript頂層代碼中(不包含任何函數(shù)內(nèi)定義的代碼):
1 <script> 2 'use strict'; 3 var a = ""; 4延伸閱讀
學(xué)習(xí)是年輕人改變自己的最好方式
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無(wú)線安全]玩轉(zhuǎn)無(wú)線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問(wèn)題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來(lái)看看(二) 2017-07-26