亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

20170525-執(zhí)行環(huán)境、作用域鏈、作用域

gnehc / 1027人閱讀

摘要:當(dāng)執(zhí)行流進(jìn)入一個函數(shù)時,函數(shù)的環(huán)境就會被推入一個環(huán)境棧中。在函數(shù)執(zhí)行完后,棧將其環(huán)境彈出,把控制權(quán)返回給之前的執(zhí)行環(huán)境。執(zhí)行環(huán)境可以分為創(chuàng)建執(zhí)行銷毀三個階段。在這個階段,作用域鏈會被初始化,的值也會被最終確定。

執(zhí)行環(huán)境

執(zhí)行環(huán)境中定義了變量和函數(shù)有權(quán)訪問的其他數(shù)據(jù),決定了他們各自的行為。

當(dāng)JavaScript解釋器初始化執(zhí)行代碼時,它首先默認(rèn)進(jìn)入全局執(zhí)行環(huán)境,從此刻開始,函數(shù)的每次調(diào)用都會創(chuàng)建一個新的執(zhí)行環(huán)境。

每個函數(shù)都有自己的執(zhí)行環(huán)境。當(dāng)執(zhí)行流進(jìn)入一個函數(shù)時,函數(shù)的環(huán)境就會被推入一個環(huán)境棧中(execution stack)。在函數(shù)執(zhí)行完后,棧將其環(huán)境彈出,把控制權(quán)返回給之前的執(zhí)行環(huán)境。ECMAScript程序中的執(zhí)行流正是由這個便利的機(jī)制控制著。

執(zhí)行環(huán)境可以分為創(chuàng)建、執(zhí)行、銷毀三個階段。在創(chuàng)建階段,解析器首先會創(chuàng)建一個變量對象(variable object),它由定義在執(zhí)行環(huán)境中的變量、函數(shù)聲明、和參數(shù)組成。在這個階段,作用域鏈會被初始化,this的值也會被最終確定。在執(zhí)行階段,代碼被解釋執(zhí)行。 某個執(zhí)行環(huán)境中的所有代碼執(zhí)行完畢后,該環(huán)境被銷毀,保存在其中的所有變量和函數(shù)定義也隨之銷毀

作用域鏈

當(dāng)代碼在一個執(zhí)行環(huán)境中執(zhí)行時,會創(chuàng)建變量對象的一個作用域鏈

作用域鏈的作用是:保證對 當(dāng)前執(zhí)行環(huán)境權(quán)訪問的所有變量和函數(shù)的有序訪問

作用域的前端始終是當(dāng)前執(zhí)行的代碼所在環(huán)境的變量對象

作用域鏈的最后始終是全局執(zhí)行環(huán)境的變量對象

作用域鏈里只包含上一級的變量對象,但并不包括下一級的變量對象

標(biāo)識符解析的是沿著作用域鏈一級一級地搜索標(biāo)識符的過程,搜索始終從作用域鏈的前端開始(當(dāng)前環(huán)境的變量對象),逐級向后查找(上級環(huán)境的變量對象),直至找到標(biāo)識符為止

內(nèi)部環(huán)境可以通過作用域鏈訪問所有外部環(huán)境,但是外部環(huán)境無法訪問內(nèi)部環(huán)境中的任何變量和函數(shù)

延長作用域鏈:

在作用域鏈的前端(自己的變量對象之前)臨時增加一個變量對象,該變量對象會在(這段)代碼執(zhí)行后被移除

try-catch語句中的catch塊

with語句:

function builder(){
    var str = "advd"
    // 在作用域鏈的前端臨時增加了一個變量對象,這樣在當(dāng)前執(zhí)行環(huán)境中就可以訪問loaction的屬性和方法了
    with(location){
        var url = href + str
    }
    // 當(dāng)with代碼執(zhí)行后,作用域鏈中的臨時變量對象被移除,此時無法訪問href
    console.log(href) //  Uncaught ReferenceError: href is not defined
    return url
}
作用域

我認(rèn)為作用域鏈?zhǔn)菍ψ兞繉ο?執(zhí)行環(huán)境而言的,當(dāng)執(zhí)行環(huán)境中出現(xiàn)一個變量時,應(yīng)該按照怎樣的搜索方式(沿著作用域鏈)去找到這個變量

作用域是對于變量而言的,指明了這個變量在哪些地方可以被訪問到,例如某一變量處于全局作用域中,則該變量可以在代碼的任何地方被訪問到

全局作用域:

最外層函數(shù)和最外層函數(shù)外面定義的變量擁有全局作用域

所有 未定義 (要理解這個未定義的含義) 直接賦值的變量自動聲明為擁有全局作用域

window對象的屬性擁有全局作用域

函數(shù)作用域:

在函數(shù)中定義的變量

給函數(shù)傳遞的參數(shù)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/83164.html

相關(guān)文章

  • 還是不明白JavaScript - 執(zhí)行環(huán)境作用、作用、閉包嗎?

    摘要:所以,全局執(zhí)行環(huán)境的變量對象始終都是作用域鏈中的最后一個對象。講到這里,可能你已經(jīng)對執(zhí)行環(huán)境執(zhí)行環(huán)境對象變量對象作用域作用域鏈的理解已經(jīng)他們之間的關(guān)系有了一個較清晰的認(rèn)識。 JavaScript中的執(zhí)行環(huán)境、作用域、作用域鏈、閉包一直是一個非常有意思的話題,很多博主和大神都分享過相關(guān)的文章。這些知識點不僅比較抽象,不易理解,更重要的是與這些知識點相關(guān)的問題在面試中高頻出現(xiàn)。之前我也看過...

    jlanglang 評論0 收藏0
  • [學(xué)習(xí)筆記] JavaScript 作用

    摘要:全局執(zhí)行環(huán)境的變量對象始終是作用域鏈中的最后一個變量對象。綜上,每個函數(shù)對應(yīng)一個執(zhí)行環(huán)境,每個執(zhí)行環(huán)境對應(yīng)一個變量對象,而多個變量對象構(gòu)成了作用域鏈,如果當(dāng)前執(zhí)行環(huán)境是函數(shù),那么其活動對象在作用域鏈的前端。 1.幾個概念 先說幾個概念:函數(shù)、執(zhí)行環(huán)境、變量對象、作用域鏈、活動對象。這幾個東東之間有什么關(guān)系呢,往下看~ 函數(shù) 函數(shù)大家都知道,我想說的是,js中,在函數(shù)內(nèi)部有兩個特殊...

    ?xiaoxiao, 評論0 收藏0
  • 形象化模擬作用,深入理解js作用、閉包

    摘要:至此作用域鏈創(chuàng)建完畢。好了,通過深入理解作用域鏈,我們能跟好的理解的運行機(jī)制和閉包的原理。 前言 理解javascript中的作用域和作用域鏈對我們理解js這們語言。這次想深入的聊下關(guān)于js執(zhí)行的內(nèi)部機(jī)制,主要討論下,作用域,作用域鏈,閉包的概念。為了更好的理解這些東西,我模擬了當(dāng)一個函數(shù)執(zhí)行時,js引擎做了哪些事情--那些我們看不見的動作。 關(guān)鍵詞: 執(zhí)行環(huán)境 作用域 作用域鏈 變...

    txgcwm 評論0 收藏0
  • 關(guān)于js閉包

    摘要:在作用域鏈中,外部函數(shù)的活動對象始終處于第二位,外部函數(shù)的外部函數(shù)的活動對象處于第三位,直到作用域鏈終點即全局執(zhí)行環(huán)境。更為重要的是函數(shù)在執(zhí)行完畢后,其他活動對象也不會被銷毀,因為匿名函數(shù)的作用域鏈仍然在引用這個活動對象。 原文鏈接----請點這里 ??閉包是指有權(quán)訪問另一個函數(shù)作用域中的變量的函數(shù),創(chuàng)建閉包的常見方式,就是在一個函數(shù)內(nèi)部創(chuàng)建另一個函數(shù)。 ??之所以一個內(nèi)部的函數(shù)可以...

    livem 評論0 收藏0
  • JS 作用

    摘要:首先,在創(chuàng)建函數(shù)時,作用域鏈內(nèi)就會先填入對象,圖片只例舉了全部變量中的一部分。然后,解釋器進(jìn)入函數(shù)的執(zhí)行環(huán)境,同樣的,首先填入父級的作用域鏈,就是的,包括了對象活動對象。之后再把的活動對象填入到作用域鏈最頂部,這就是的作用域鏈了。 之前學(xué)習(xí)JS函數(shù)部分時,提到了作用域這一節(jié),但是因為使用材料書不同,今天在讀博客的時候發(fā)現(xiàn)其實還有一個知識點即作用域鏈,所以來寫一些個人理解和認(rèn)識加深記憶。...

    darry 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<