成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

一篇帶你了解JS 執行上下文與作用域

開發 前端
執行上下文是JavaScript代碼執行的環境,包括變量對象、作用域鏈和this等元素。了解執行上下文的創建過程和作用可以幫助開發者更好地理解和調試JavaScript代碼。

JavaScript中的執行上下文是指JavaScript代碼執行的環境,它包括變量、函數、作用域和this等元素。在JavaScript中,每當函數執行時,都會創建一個新的執行上下文。

執行上下文分為全局執行上下文和函數執行上下文兩種。

全局執行上下文

全局執行上下文是在頁面加載時創建的,它是整個JavaScript代碼的最外層環境,包含了所有的全局變量、函數和this等元素。

函數執行上下文

函數執行上下文是在函數被調用時創建的,它包含了函數內部的變量、函數和this等元素。每當函數被調用時,都會創建一個新的函數執行上下文。

函數執行上下文包括三個重要的元素:

  • 變量對象(Variable Object,VO):包含了函數內部的變量和函數聲明。
  • 作用域鏈(Scope Chain):用于解決變量訪問的問題,它是一個由多個執行上下文的變量對象組成的鏈式結構。
  • this指針:指向函數被調用時的當前對象。

執行上下文的創建過程分為兩個階段:創建階段和代碼執行階段。

創建階段

在創建階段,JavaScript引擎會進行以下操作:

  • 創建變量對象:函數執行上下文中的變量對象包括所有的函數參數、函數聲明和變量聲明等。
  • 建立作用域鏈:JavaScript引擎會將當前執行上下文的變量對象添加到作用域鏈的最前端。
  • 確定this指針:this指針的值取決于函數被調用時的環境。

代碼執行階段

在代碼執行階段,JavaScript引擎會按照代碼的順序執行代碼,并將變量的值存儲在變量對象中。

需要注意的是,JavaScript中的變量提升現象是由執行上下文的創建階段所導致的。在創建階段中,JavaScript引擎會將變量聲明提升到當前執行上下文的頂部,因此在代碼執行階段前就可以訪問到變量。

當代碼運行時,會產生對應的運行環境,在這個環境中,所有的變量都會被實現提出來(變量提升),有的直接賦值,有的默認賦值,有點默認值 undefined ,代碼從上而下開始執行,就叫做執行上下文。

變量提升

foo // undefined
var foo = function () {
  console.log('foo1')
}

foo() // foo1, foo賦值

var foo = function () {
  console.log('foo2')
}

foo() // foo2, foo 賦值

函數提升

foo() // foo2
function () {
  console.log('foo1')
}

foo() // foo2

function foo () {
  console.log('foo2')
}
foo() // foo2

聲明優先級,函數 > 變量

foo() // foo2
var foo = function () {
  console.log('foo1')
}

foo() // foo1, foo 重新賦值

function foo () {
  console.log('foo2')
}

foo() // foo1

總之,執行上下文是JavaScript代碼執行的環境,包括變量對象、作用域鏈和this等元素。了解執行上下文的創建過程和作用可以幫助開發者更好地理解和調試JavaScript代碼。


責任編輯:姜華 來源: 今日頭條
相關推薦

2021-07-26 07:47:36

Cpu上下文進程

2021-05-25 10:15:20

JavaScript 前端作用域

2015-07-08 10:25:05

Javascript上下文作用域

2021-11-24 08:51:32

Node.js監聽函數

2020-02-21 10:09:06

調度進程線程

2021-05-20 06:57:16

RabbitMQ開源消息

2022-09-14 13:13:51

JavaScript上下文

2025-01-08 11:10:46

2021-08-02 06:34:55

Redis刪除策略開源

2021-11-08 08:42:44

CentOS Supervisor運維

2021-12-15 11:52:34

GPLLinuxGNU

2023-05-12 08:19:12

Netty程序框架

2021-07-28 10:02:54

建造者模式代碼

2021-08-11 07:02:21

npm包管理器工具

2021-06-30 00:20:12

Hangfire.NET平臺

2021-07-14 08:24:23

TCPIP 通信協議

2023-12-10 13:37:23

Python編程上下文管理

2020-07-24 10:00:00

JavaScript執行上下文前端

2021-07-03 08:04:10

io_uringNode.js異步IO

2023-09-06 14:57:46

JavaScript編程語言
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久se | 亚洲+变态+欧美+另类+精品 | 在线观看视频一区 | 中文在线a在线 | 久久综合一区 | 亚洲欧美日韩高清 | 91成人精品 | 精品国产青草久久久久96 | 国产视频久久 | 午夜羞羞 | 国产丝袜一区二区三区免费视频 | 真人一级毛片 | 91精品国产色综合久久不卡98口 | 日日干日日操 | 日本天堂视频 | 中文字幕一区二区三 | 国产精品久久一区 | www.日本三级| 国产精品久久久亚洲 | 一级在线观看 | 国产精品日韩在线观看一区二区 | 日本精品久久久久 | 久久午夜国产精品www忘忧草 | 日日日日日日bbbbb视频 | 国产高清一区二区三区 | 国产女人与拘做受免费视频 | 天堂中文在线播放 | 91精品国产91久久久 | 99久久婷婷 | 一区二区三区在线 | 欧 | 麻豆一区二区三区 | 中文字幕在线网 | 青青草原综合久久大伊人精品 | 精品国产视频 | www国产成人免费观看视频 | 亚洲精品电影在线观看 | 欧美精品一二三 | 中午字幕在线观看 | 成人免费视频观看 | 国产精品欧美一区二区三区 | av在线免费观看网址 |