lesson20 作用域鏈(Scope Chain)

在 JavaScript 中阱高,函數(shù)也是對(duì)象竞端,實(shí)際上屁擅,JavaScript 里一切都是對(duì)象。函數(shù)對(duì)象和其它對(duì)象一樣齐蔽,擁有可以通過(guò)代碼訪問(wèn)的屬性和一系列僅供 JavaScript 引擎訪問(wèn)的內(nèi)部屬性两疚。其中一個(gè)內(nèi)部屬性是 [[Scope]],由 ECMA-262 標(biāo)準(zhǔn)第三版定義含滴,該內(nèi)部屬性包含了函數(shù)被創(chuàng)建的作用域中對(duì)象的集合诱渤,這個(gè)集合被稱為函數(shù)的作用域鏈,它決定了哪些數(shù)據(jù)能被函數(shù)訪問(wèn)谈况。

  1. 在函數(shù)創(chuàng)建時(shí)勺美,它的作用域鏈中會(huì)填入一個(gè)全局對(duì)象,該全局對(duì)象包含了所有全局變量碑韵。
  2. 函數(shù)執(zhí)行時(shí)會(huì)創(chuàng)建一個(gè)稱為“運(yùn)行期上下文(execution context)”的內(nèi)部對(duì)象赡茸,運(yùn)行期上下文定義了函數(shù)執(zhí)行時(shí)的環(huán)境。每個(gè)運(yùn)行期上下文都有自己的作用域鏈祝闻,用于標(biāo)識(shí)符解析占卧,當(dāng)運(yùn)行期上下文被創(chuàng)建時(shí),而它的作用域鏈初始化為當(dāng)前運(yùn)行函數(shù)的[[Scope]]所包含的對(duì)象。
  3. 這些值按照它們出現(xiàn)在函數(shù)中的順序被復(fù)制到運(yùn)行期上下文的作用域鏈中华蜒。它們共同組成了一個(gè)新的對(duì)象辙纬,叫“活動(dòng)對(duì)象(activation object)”,該對(duì)象包含了函數(shù)的所有局部變量叭喜、命名參數(shù)贺拣、參數(shù)集合以及this,然后此對(duì)象會(huì)被推入作用域鏈的前端捂蕴。
  4. 當(dāng)運(yùn)行期上下文被銷毀譬涡,活動(dòng)對(duì)象也隨之銷毀。

在函數(shù)執(zhí)行過(guò)程中啥辨,每遇到一個(gè)變量涡匀,都會(huì)經(jīng)歷一次標(biāo)識(shí)符解析過(guò)程以決定從哪里獲取和存儲(chǔ)數(shù)據(jù)。該過(guò)程從作用域鏈頭部委可,也就是從活動(dòng)對(duì)象開(kāi)始搜索渊跋,查找同名的標(biāo)識(shí)符,如果找到了就使用這個(gè)標(biāo)識(shí)符對(duì)應(yīng)的變量着倾,如果沒(méi)找到繼續(xù)搜索作用域鏈中的下一個(gè)對(duì)象拾酝,如果搜索完所有對(duì)象都未找到,則認(rèn)為該標(biāo)識(shí)符未定義卡者。函數(shù)執(zhí)行過(guò)程中蒿囤,每個(gè)標(biāo)識(shí)符都要經(jīng)歷這樣的搜索過(guò)程。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末崇决,一起剝皮案震驚了整個(gè)濱河市材诽,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌恒傻,老刑警劉巖脸侥,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異盈厘,居然都是意外死亡睁枕,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門沸手,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)外遇,“玉大人,你說(shuō)我怎么就攤上這事契吉√拢” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵捐晶,是天一觀的道長(zhǎng)菲语。 經(jīng)常有香客問(wèn)我妄辩,道長(zhǎng),這世上最難降的妖魔是什么谨究? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任恩袱,我火速辦了婚禮泣棋,結(jié)果婚禮上胶哲,老公的妹妹穿的比我還像新娘。我一直安慰自己潭辈,他們只是感情好鸯屿,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著把敢,像睡著了一般寄摆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上修赞,一...
    開(kāi)封第一講書(shū)人閱讀 49,741評(píng)論 1 289
  • 那天婶恼,我揣著相機(jī)與錄音,去河邊找鬼柏副。 笑死勾邦,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的割择。 我是一名探鬼主播眷篇,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼荔泳!你這毒婦竟也來(lái)了蕉饼?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤玛歌,失蹤者是張志新(化名)和其女友劉穎昧港,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體支子,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡创肥,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了译荞。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片瓤的。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖吞歼,靈堂內(nèi)的尸體忽然破棺而出圈膏,到底是詐尸還是另有隱情,我是刑警寧澤篙骡,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布稽坤,位于F島的核電站丈甸,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏尿褪。R本人自食惡果不足惜睦擂,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望杖玲。 院中可真熱鬧顿仇,春花似錦、人聲如沸摆马。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)囤采。三九已至述呐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蕉毯,已是汗流浹背乓搬。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留代虾,地道東北人进肯。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像褐着,于是被迫代替她去往敵國(guó)和親坷澡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 粘貼 剪貼 復(fù)制 五點(diǎn)含蓉、六點(diǎn)或七點(diǎn)频敛,有多少鬧鐘在響 誰(shuí)不是呢,都在忙著粘貼自已 日子和昨天一模一樣 只是 早餐店里...
    拉薩的春天閱讀 164評(píng)論 0 1
  • 幣幣信息 BTC昨晚打破橫盤整理走勢(shì)馅扣,在22時(shí)左右小幅回落至$8380附近整理斟赚,目前尚未完全跌破50日均線,市場(chǎng)整...
    SilkTrader點(diǎn)金網(wǎng)閱讀 465評(píng)論 0 0