成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

執(zhí)行環(huán)境、作用域鏈、變量提升、this

vpants / 906人閱讀

摘要:重點每一個函數(shù)都有自己的執(zhí)行環(huán)境,每個執(zhí)行環(huán)境都有一個與之關(guān)聯(lián)的變量對象,環(huán)境中定義的變量和函數(shù)都保存在這個對象中。即當(dāng)在函數(shù)中查找一個變量時,是根據(jù)作用域查找的。此掃描的結(jié)果將稱為中的。借鑒文章譯的執(zhí)行上下文和環(huán)境棧是什么

重點:每一個函數(shù)都有自己的執(zhí)行環(huán)境,每個執(zhí)行環(huán)境都有一個與之關(guān)聯(lián)的變量對象,環(huán)境中定義的變量和函數(shù)都保存在這個對象中。
這個對象就是執(zhí)行上下文對象:

executionContextObj={
    //變量對象
    variableObject:{/*函數(shù)中的arguments對象,參數(shù)、內(nèi)部的變量以及函數(shù)聲明*/]
    //作用域
    scopeChain:{/*variableObject以及所有父執(zhí)行上下文中的variableObject*/},
    this:{}
}

根據(jù)這個執(zhí)行環(huán)境我們解析以下幾個問題:

1、查找變量的順序(知識點:作用域與作用域鏈)
executionContextObj中的scopeChain是這個函數(shù)的作用域,scopeChain=variableObject+[[scope]]
varibaleObject為當(dāng)前的變量對象,[[scope]]為父執(zhí)行上下文的作用域鏈,variableObject位于前面,所以查找變量時總是先從自身查找,然后依次到父執(zhí)行上下文中查找。
即當(dāng)在函數(shù)中查找一個變量時,是根據(jù)作用域查找的。

2、this是什么?和作用域的區(qū)別
this總是指向函數(shù)調(diào)用時的環(huán)境(動態(tài)作用域即運行時上下文)
作用域保存的是函數(shù)被定義時的環(huán)境(靜態(tài)作用域即編程時的上下文)
我們知道javascript沒有塊級作用域,最小單位為函數(shù),作用域能訪問到函數(shù)中的變量,this則指向調(diào)用者,即可訪問對象中的變量

3、提升,函數(shù)提升總是優(yōu)先于變量提升(為什么可以先使用后定義)
參考:[【譯】JS的執(zhí)行上下文和環(huán)境棧是什么?]

在調(diào)用函數(shù)時,但是在執(zhí)行里面的代碼之前,會對函數(shù)進(jìn)行一次掃描,解釋器通過掃描傳入的參數(shù)或參數(shù)的函數(shù)、本地函數(shù)聲明和局部函數(shù)聲明來創(chuàng)建executionContextObj。此掃描的結(jié)果將稱為executionContextObj中的variableObject。

就是因為在代碼運行之前,解釋器已經(jīng)掃描過在函數(shù)中變量和函數(shù),已經(jīng)創(chuàng)建這些變量,所以在代碼執(zhí)行時,這些變量就可以直接使用,并且函數(shù)的提升優(yōu)先于變量。

借鑒文章:【譯】JS的執(zhí)行上下文和環(huán)境棧是什么?https://juejin.im/post/5c8554...

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

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/109117.html

相關(guān)文章

  • 形象化模擬作用域鏈,深入理解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
  • JS核心知識點梳理——上下文、作用域、閉包、this(上)

    摘要:引言滿滿的干貨,面試必系列,參考大量資料,并集合自己的理解以及相關(guān)的面試題,對核心知識點中的作用域閉包上下文進(jìn)行了梳理。如果在小區(qū)這個作用域找到了張老師,我就會在張老師的輔導(dǎo)下學(xué)鋼琴我張老師房間鋼琴構(gòu)成了學(xué)琴的上下文環(huán)境。 showImg(https://segmentfault.com/img/bVbo4hv?w=1800&h=1000); 引言 滿滿的干貨,面試必bei系列,參考大...

    Andrman 評論0 收藏0
  • JavaScript基礎(chǔ)系列---執(zhí)行環(huán)境作用域鏈

    摘要:延長作用域鏈下面兩種語句可以在作用域鏈的前端臨時增加一個變量對象以延長作用域鏈, 問題 今天看筆記發(fā)現(xiàn)自己之前記了一個關(guān)于同名標(biāo)識符優(yōu)先級的內(nèi)容,具體是下面這樣的: 形參優(yōu)先級高于當(dāng)前函數(shù)名,低于內(nèi)部函數(shù)名 形參優(yōu)先級高于arguments 形參優(yōu)先級高于只聲明卻未賦值的局部變量,但是低于聲明且賦值的局部變量 函數(shù)和變量都會聲明提升,函數(shù)名和變量名同名時,函數(shù)名的優(yōu)先級要高。執(zhí)行代...

    J4ck_Chan 評論0 收藏0
  • JS:執(zhí)行環(huán)境、作用域鏈變量提升、this

    JS:執(zhí)行環(huán)境、作用域鏈、變量提升、this

    scwang90 評論0 收藏0
  • “動靜結(jié)合” 小白初探靜態(tài)(詞法)作用域,作用域鏈執(zhí)行環(huán)境(EC)

    摘要:圖片中的作用域鏈,是全局執(zhí)行環(huán)境中的作用域鏈。然后此活動對象被推入作用域鏈的最前端。在最后調(diào)用的時候,創(chuàng)建先構(gòu)建作用域鏈,再創(chuàng)建執(zhí)行環(huán)境,再創(chuàng)建執(zhí)行環(huán)境的時候發(fā)現(xiàn)了一個變量標(biāo)識符。 從圖書館翻過各種JS的書之后,對作用域/執(zhí)行環(huán)境/閉包這些概念有了一個比較清晰的認(rèn)識。 栗子說明一切 第一個栗子 來看一個來自ECMA-262的栗子: var x = 10; (function foo(...

    Drummor 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<