精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

JavaScript抽象概念簡而不單,單而不簡!

開發 前端
想必大伙兒看到本期的標題很有疑惑,為什么是簡而不單,單而不簡的執行上下文呢?我來先解釋一下,對于 javaScript 上一些抽象的概念,我們可以把它講的非常復雜,也可以把它講的極其簡單,更可以把它講的既復雜又簡單。

[[384723]]

本文轉載自微信公眾號「小鹿動畫學編程」,作者小鹿   。轉載本文請聯系小鹿動畫學編程公眾號。

想必大伙兒看到本期的標題很有疑惑,為什么是簡而不單,單而不簡的執行上下文呢?我來先解釋一下,對于 javaScript 上一些抽象的概念,我們可以把它講的非常復雜,也可以把它講的極其簡單,更可以把它講的既復雜又簡單。

嗯~ 最近重新回顧了這些抽象的概念,發現有些概念之前并不能很好的融會貫通,所以把這些相對抽象難以理解的概念作為幾期文章來寫。

我個人覺得要想更好的理解抽象概念,不得不借助可視化的圖像減少作者和讀者之間的理解力和理解差錯。所以,不用擔心,這篇文章小鹿會通過加入更多的圖片深入淺出的解釋這些抽象的概念。

1、執行上下文

1.1 JavaScript 引擎

說到執行上下文,不得不先扯扯 JavaScript 引擎,JavaScript 引擎是什么?考慮到這篇文章不專門寫 JavaScript 引擎,可以自己谷歌一下。說白了,JavaScript 引擎就是用來「解釋」、「編譯」和「執行」JavaScript 代碼的。

畢竟開發人員寫的 JS 代碼只能夠讓開發者認得出來,交給計算機,由于計算機只識別二進制,所以中間需要進行一系列的解釋和轉化才能看懂執行這些 JavaScript 代碼。

1.2 執行棧 (Execution stack)

小鹿注:保證 JavaScript 代碼的執行"順序"。

JavaScript 引擎既然可以執行 JS 的代碼,那么是按照什么順序執行的,又是怎么保證這些順序而不被所打亂的。先看一段簡單的代碼:

  1. var foo2 = function () { 
  2.   console.log('foo2'); 
  3.  
  4. var foo1 = function () { 
  5.   console.log('foo1'); 
  6.   foo2() 
  7.   console.log('foo3'
  8.  
  9. foo1(); // 輸出:“foo1  foo2  foo3” 

通過上述代碼片段的執行,輸出的順序為'foo1 foo2 foo3'。

代碼執行,foo1()函數先執行,首先輸出'foo1',遇到 foo2() 函數的執行命令,將執行權交給 foo2, foo2 函數體執行,輸出'foo2'。foo2 執行完畢后,將執行權交回 foo1 函數,最后輸出'foo3'

我們可以找出上述代碼執行的規律,先執行的函數,會在最后退出,后執行的函數,先執行完畢。這個執行順序不就是“棧”的“先進后出”``“后進先出”的結構嘛。JavaScript 引擎將其這種執行結構稱為「執行棧」,用于保證 JavaScript 代碼的順序。

1.3 執行上下文(Exception Context)

小鹿注:將執行的代碼"模塊化" —— 執行上下文的分類。

什么是執行上下文?雖然我們在“執行上下文”詞義上很難直接理解,但是它具體代表的是什么,是很容易理解的,下面我把“執行上下文”的抽象概念進行具體化。

上述我們已經解釋了 JavaScript 引擎是使用執行棧來保證代碼的執行順序的,但是執行過程中需要涉及到一些變量的作用范圍界定(作用域)、閉包等復雜情況,我們需要 JavaScript 引擎引入一種機制來解決這些看起來復雜的問題,所以「執行上下文」的概念產生了。

但是,執行上下文是什么?這不得不讓我想起組件的模塊化開發,之前的一個網頁應用代碼從上到下一個文件寫下來幾千行代碼,難以閱讀、難以維護,所以有了后來的模塊化開發。每個模塊都有自己的功能,都有屬于自己的局部變量和樣式。

我們可以理解為 JavaScript 引擎為了更好的解釋和執行代碼,所以引入類似于像組件模塊的“執行上下文”的概念用于管理運行時代碼的復雜度。

2、執行上下文的分類

上述我們把抽象的“執行上下文”類似于“模塊”的具體概念便于理解。當然,執行上下文也就是所謂的“模塊”也有不同的分類,在這里具體只展開兩種,「全局執行上下文」和「局部執行上下文」。

2.1 全局執行上下文(Global Exception Context)

全局上下文這個“模塊”由兩部分組成,「全局對象」和「this」。

下圖是全局執行上下文的最基本形式。包含一個 window 對象,以及一個 this 變量,而這個 this 變量是指向 window 對象的,如最右圖的打印結果。

從這里我們看出,執行上下文可以理解為是一個在內存中的「對象和變量」集合的模塊(或者說是片段),這也是為什么我們可以把它看作類似“模塊”的原因(除此之外還有其他作用)

小鹿注:為了便于理解,定義是我自己總結的,如有欠缺歡迎指出~

2.2 局部執行上下文

局部執行上下文和全局執行上下文類似,但不完全相同,在函數局部執行上下文中,需要注意的有以下兩點:

  • 函數傳入的參數會作為局部執行上下文的變量來存儲
  • 局部上下文有一個 arguments 參數對象(參考)局部執行上下文內容會在下面的兩個階段中詳細講到。

3、執行上下文兩個階段

無論是全局執行上下文還是局部的執行上下文,都會經歷兩個階段,分別是「創建」和「執行」。

如下我們有一段代碼:

  1. var name = "小鹿"
  2. var age = 23; 
  3.  
  4. function getInfo(){ 
  5.   return { 
  6.     namename
  7.     age: age 
  8.   }; 

3.1 創建階段(Creation)

創建階段要完成的事情,如下:

  • 在堆內存中創建全局對象(global object)—— 瀏覽器環境是 windows,Node 環境是 Global
  • 讓 this 變量指向這個全局對象
  • 設置當前執行上下文中「變量和函數」的內存空間
  • 將聲明的變量加入內存中(同時掛在到全局對象上),為變量賦值 undifined,函數存儲的是字符串形式

小鹿注:左 (1) 圖執行的代碼,左 (2) 圖創建階段完成后的執行上下文內存中狀態,右 (1) 創建階段全局對象的狀態。

JavaScript 引擎在執行代碼之前,先在堆內存中創建全局執行上下文,生成全局對象(global object),然后讓 this 變量指向這個變量。JavaScript 發現代碼中聲明的兩個變量 name 和 age,然后在全局執行上下文中申請內存空間,將變量存儲到該內存空間內,然后為該變量賦值 undefined,函數就以字符串的形式存儲在內存中。

小鹿注:在創建階段為變量聲明指定默認值(undefined)的過程稱為「變量提升」。

3.2 執行階段(Execution)

全局執行上下文創建完成之后,開始由創建狀態(Creation)變為執行狀態( Execution)。JavaScript 引擎開始逐行運行和執行代碼,并為在創建階段放入內存的變量賦予值。

小鹿注:左 (1) 圖執行的代碼,左 (2) 圖執行階段完成后的執行上下文內存中狀態,右 (1) 執行階段全局對象的狀態。

局部執行上下文和全局執行上下文的創建和執行過程是一模一樣的。但是全局執行上下文創建一次,而函數局部執行上下文是隨著函數的每次調用都要創建一個局部執行上下文。

還是上述例子,執行結果如下:

  1. var name = "小鹿"
  2. var age = 23; 
  3.  
  4. function getInfo(name){ 
  5.   console.log(name); 
  6.   return { 
  7.     namename
  8.     age: age 
  9.   }; 
  10.  
  11. getInfo(name); 

函數局部上下文執行狀態如下:

小鹿注:由于函數中沒有定義新的變量,所以在這里沒有變量提升。

我們了解了什么是函數局部上下文,當函數局部上下文執行完畢之后,就會執行出棧操作,將執行權交給父級執行上下文(可能是局部執行上下文,也可能是全局執行上下文),上述 getInfo 函數執行完畢的狀態如下圖所示。

此時的函數執行完畢,局部執行上下文出棧銷毀,執行權交給全局執行上下文繼續執行其他代碼。

由于 JavaScript 是單線程的,一次只能執行一個任務,為了方便大伙兒理解,左(3)圖 是執行棧的調用情況。當然,我們也可以發現,左(2)圖是以嵌套的方式來模擬執行棧的操作,每一個嵌套選項都是堆棧中一個新的執行上下文。

4、小結

執行上下文在 JavaScript 中是一個非常重要的概念,在接下幾期的進階文章中,作用域、作用域、閉包、this等概念,都會與本期文章內容掛鉤。

責任編輯:武曉燕 來源: 小鹿動畫學編程
相關推薦

2014-03-06 11:29:39

銳捷網絡簡網絡

2009-07-02 19:03:34

虛擬化服務器虛擬化VMware

2016-03-11 10:06:27

CIO時代網

2013-03-21 17:42:35

2022-03-27 20:37:42

系統抽象語言

2011-07-28 09:50:58

設計模式

2010-06-25 14:39:12

多協議標簽交換

2013-01-15 09:14:20

2014-10-22 15:49:08

2010-07-23 08:22:00

動態語言框架

2015-07-10 10:27:23

銳捷

2014-03-14 09:41:22

銳捷網絡簡網絡

2014-04-22 09:49:57

銳捷網絡簡網絡

2014-08-20 09:26:47

銳捷網絡銳捷智分

2015-04-27 09:01:07

銳捷網絡銳捷智分

2015-05-27 09:31:27

銳捷

2015-06-05 09:39:05

銳捷

2014-03-18 09:46:35

銳捷網絡簡網絡
點贊
收藏

51CTO技術棧公眾號

欧美性videos| 日韩免费精品视频| 亚洲va久久久噜噜噜| 久久国产劲爆∧v内射| 亚洲va在线观看| 99精品视频在线免费播放| 亚洲深夜av| 9191国产精品| 亚洲第一在线综合在线| 国产手机在线视频| 激情综合五月| 18涩涩午夜精品.www| 欧美一性一乱一交一视频| av电影中文字幕| 免费在线观看av| 成人免费视频免费观看| 精品国产区一区二区三区在线观看 | 五月天国产一区| 黄色一级片免费看| 国产精品毛片久久| 欧美日免费三级在线| 欧美日韩无遮挡| 黑人精品无码一区二区三区AV| 日韩精品不卡一区二区| 在线中文字幕一区| 日本视频一区二区在线观看| 黄色片免费观看视频| 欧美黄色网视频| 偷窥国产亚洲免费视频| 狠狠色综合欧美激情| 久一视频在线观看| 国内精品偷拍| 大荫蒂欧美视频另类xxxx| 久久久久欧美| 五月激情丁香网| 日韩伦理一区| 亚洲男女自偷自拍图片另类| 久久久久久久久久久久久国产精品| 亚洲 精品 综合 精品 自拍| 国产精品久久久亚洲一区| xxav国产精品美女主播| 国产免费无遮挡吸奶头视频| 日本精品网站| 国产精品理论片| 97视频资源在线观看| 日韩av在线天堂| 久操国产精品| 欧美日韩成人综合在线一区二区| av磁力番号网| 欧美一区二区公司| 久久视频一区| 久久精品久久久久久国产 免费| 国产成人美女视频| 丁香高清在线观看完整电影视频| 成人动漫精品一区二区| 亲爱的老师9免费观看全集电视剧| 中文字幕免费在线看线人动作大片| 日本黄色成人| 亚洲国产日产av| 日韩精品国内| 国产激情无套内精对白视频| 亚洲一级电影| 一区二区亚洲欧洲国产日韩| 91香蕉国产线在线观看| 午夜影院在线播放| 久久久久久久久久91| 日韩视频一二区| 亚洲一区二区中文在线| 欧美日韩国产免费一区二区三区 | 日韩vs国产vs欧美| 久久精品成人欧美大片| 伊人久久久久久久久久久久久久| 激情五月综合婷婷| 日韩美女一区二区三区四区| 黑森林福利视频导航| 校园春色亚洲| 欧美伊人久久久久久久久影院| 日本一二三区视频在线| 黄色美女网站在线观看| 国产乱对白刺激视频不卡| 欧美亚洲激情在线| 免费黄色片视频| 在线播放一区| 日韩av毛片网| 中文字幕人妻一区二区三区视频| 黄色日韩精品| 久久最新资源网| 99久久久无码国产精品性| 欧洲精品99毛片免费高清观看| 欧美草草影院在线视频| 亚洲综合婷婷久久| 北岛玲heyzo一区二区| 一级做a爱片久久| 中文字幕av日韩精品| 免费资源在线观看| 成人午夜看片网址| 日本高清视频一区二区三区| 日本中文字幕伦在线观看| 91欧美激情一区二区三区成人| 亚洲最大的免费| 狠狠躁夜夜躁av无码中文幕| 黄页视频在线91| 国产精品jizz在线观看麻豆| 日本一二三区不卡| 日本亚洲天堂网| 国产精品第2页| 国产熟妇一区二区三区四区| 久久最新视频| 亚洲xxx大片| 国产黄在线看| 国产欧美精品国产国产专区| 蜜桃成人在线| 青青操视频在线| 91美女片黄在线观看91美女| 在线国产伦理一区| 在线观看欧美日韩电影| 制服.丝袜.亚洲.中文.综合| 99久久久无码国产精品性| 欧美日韩一区二区国产| xvideos亚洲| 亚洲欧美偷拍视频| 成人免费看的视频| 日韩第一页在线观看| 九色porny在线| 亚洲特级片在线| 欧美大片免费播放| 无人区在线高清完整免费版 一区二 | 欧美va亚洲va国产综合| 91成人精品一区二区| 欧美在线电影| 日韩在线资源网| 内射一区二区三区| 国产一区二区三区四区老人| 国产精品视频地址| 99久久久国产精品无码网爆 | 天天爽夜夜爽夜夜爽精品视频| 九九热免费在线观看| 俺要去色综合狠狠| 人体精品一二三区| 你懂的视频在线观看| 五月天视频一区| 制服丝袜av在线| 激情视频一区| 国产在线视频欧美一区二区三区| 污视频网站免费观看| 亚洲国产精品精华液网站| 日本少妇一级片| 亚洲视频狠狠| 久久99精品久久久久子伦| 99在线视频影院| 欧美自拍丝袜亚洲| 亚洲女优在线观看| 视频在线观看国产精品| 欧美性色黄大片人与善| 欧美三级网址| 欧美一区二区三区视频在线| 日本中文字幕有码| 亚洲国产日本| 国产免费久久av| 免费观看黄色一级视频| 亚洲一区视频在线| 欧美做受喷浆在线观看| 久久资源中文字幕| 欧美黄色片免费观看| www.久久精品视频| 久久久久国产精品厨房| 先锋影音男人资源| 欧美影院精品| 韩国福利视频一区| 国产精品毛片久久久久久久av| 北条麻妃一区二区三区| 狠狠色狠狠色综合人人| 中文一区一区三区高中清不卡免费| 亚洲毛茸茸少妇高潮呻吟| 久久精品五月天| 中文字幕日韩欧美一区二区三区| 久久久久亚洲av片无码v| av永久不卡| 午夜免费日韩视频| 日韩电影免费| 欧美日韩一区小说| 欧美成人精品欧美一级| 日韩成人一区二区| 亚洲小说欧美另类激情| 久久黄色影视| 欧美日韩国产第一页| 中日韩在线观看视频| 亚洲天堂久久久久久久| www.免费av| 久久国产人妖系列| 日韩精品第一页| 美女精品久久| 奇门遁甲1982国语版免费观看高清| 超碰97在线免费观看| 色久综合一二码| 菠萝菠萝蜜网站| 久久草av在线| 亚洲高清在线观看一区| 日韩成人在线看| 国产成人综合一区二区三区| а√天堂官网中文在线| 欧美二区乱c少妇| jizzjizzjizz国产| 美国十次了思思久久精品导航| 日韩a级黄色片| 8848成人影院| 久久久免费观看视频| 六月婷婷中文字幕| 欧美在线综合视频| 国产一级特黄aaa大片| 国产精品区一区二区三| 国产一线在线观看| 99国产一区| 欧美一区二区三区电影在线观看| 国产在线不卡一区二区三区| 久久亚洲影音av资源网| 日本国产在线| 欧美精品一区二区在线观看| 精品成人久久久| 亚洲精选免费视频| 国内精品免费视频| 九色porny丨国产精品| 欧美爱爱视频免费看| 色爱综合av| 国产成人精品综合久久久| 七七成人影院| 日韩成人中文字幕在线观看| 天天综合天天干| 久久精品视频免费观看| av五月天在线| 97欧美在线视频| 日韩视频精品| 米奇777超碰欧美日韩亚洲| 国产乱人伦精品一区二区| 日本不卡1234视频| 亚洲天堂网在线观看| 97免费观看视频| 欧美性猛交xxxx乱大交退制版| 日韩久久中文字幕| 欧美日韩国产中文精品字幕自在自线| 久久午夜鲁丝片午夜精品| 亚洲美女在线一区| 国产精品久久久久久久精| 日韩美女精品在线| 三级av在线免费观看| 亚洲欧洲成人精品av97| 精品女人久久久| gogo大胆日本视频一区| 精品人妻二区中文字幕| 国产精品一级片| 中文字幕无人区二| 国产一区啦啦啦在线观看| av免费观看国产| 成人在线免费观看视频| 日韩三级电影网站| 国产高清久久| 无码人妻精品一区二区三区99v| 国产大片一区| 成人免费a级片| 俺要去色综合狠狠| 亚洲午夜精品久久| 欧美亚洲国产日韩| 久久大片网站| 国内精品久久久久久久影视简单 | 国产欧美一区二区精品久久久| 欧美日韩精品久久久免费观看| 九九视频精品全部免费播放| 天堂社区 天堂综合网 天堂资源最新版| 成人情趣视频网站| 久久最新免费视频| 亚洲日本免费| 手机在线看福利| 国产成人亚洲精品狼色在线| 茄子视频成人免费观看| 91精品高清| 日本精品免费| 久久久久久久久久久久久久| 无码熟妇人妻av在线电影| 色777狠狠狠综合伊人| 国产免费一区二区三区四在线播放| 欧美韩国一区| 影音先锋欧美资源| 极品日韩av| 男人女人黄一级| 影音先锋在线一区| av无码精品一区二区三区| 国产一区二区在线观看免费| 亚洲中文字幕无码一区| 欧美激情中文不卡| 免费在线黄色片| 成人免费视频在线观看| 日韩 欧美 精品| 欧美日本在线视频| 日韩中文字幕观看| 爽爽爽爽爽爽爽成人免费观看| 国产盗摄一区二区| 国产精品福利在线观看| 一本色道69色精品综合久久| 奇米视频888战线精品播放| 在线看片不卡| 永久免费看av| 媚黑女一区二区| 欧美丰满熟妇bbbbbb百度| 琪琪一区二区三区| 日韩免费高清一区二区| 成人免费视频视频| 强制高潮抽搐sm调教高h| 欧美日韩裸体免费视频| av男人天堂av| 一区二区成人av| 欧产日产国产精品视频| 91青草视频久久| 久久中文字幕一区二区| 欧美黑人xxxxx| 伊人久久亚洲美女图片| 久久久久xxxx| 国产成人亚洲综合a∨婷婷| 色综合99久久久无码国产精品| 亚洲国产视频网站| 国产普通话bbwbbwbbw| 国产亚洲精品高潮| 伊人久久国产| 狠狠色噜噜狠狠狠狠色吗综合| 91精品国产自产在线观看永久∴| av五月天在线| 久久久久久久久久久久久女国产乱| 久久精品女人毛片国产| 黄色精品一区二区| 亚洲精品一区二区三区新线路 | 香蕉av一区二区| 亚洲精品一二三四五区| 久久久久久一二三区| 免费看日韩毛片| 亚洲电影中文字幕| 欧美少妇另类| 欧美专区在线观看| 久久激情av| 精品欧美一区免费观看α√| 成人晚上爱看视频| 久久综合久久鬼| 精品免费日韩av| 日韩精品卡一| 国产成人极品视频| 亚洲97av| 懂色av一区二区三区四区五区| 秋霞午夜av一区二区三区| 久久婷婷五月综合| 欧美午夜精品久久久| av网站在线免费播放| 欧美激情啊啊啊| 国产乱人伦丫前精品视频| 日本中文字幕网址| 久久国产精品免费| 看黄色录像一级片| 欧美一区欧美二区| 青青草原av在线| 国产在线精品一区| 久久精品女人天堂| 国产又粗又硬视频| 欧美美女一区二区| 丝袜美女在线观看| 久久国产精品一区二区三区| 久久精品电影| 日韩av毛片在线观看| 欧美一区永久视频免费观看| av电影在线免费| 日本高清不卡三区| 国产乱人伦精品一区二区在线观看 | 日本a级片电影一区二区| 日韩aaaa| 国内自拍偷拍视频| 欧美日韩在线第一页| 98在线视频| 97se亚洲综合| 久久蜜桃精品| 91视频免费在线看| 亚洲精品97久久| 精品51国产黑色丝袜高跟鞋| 91手机在线播放| 亚洲在线成人| 黄色性视频网站| 色噜噜久久综合| 五月婷婷视频在线观看| 久久一区二区三区av| 精品一区二区三区免费| 日本一二三区不卡| 久久精品99久久久香蕉| 美国成人xxx| 182午夜在线观看| 午夜精品成人在线视频| 国产99999| 欧美在线观看日本一区| 91视频综合| 国产欧美在线播放| 人妻一区二区三区四区| 91国语精品自产拍在线观看性色| 麻豆一区在线| 精品一区二区中文字幕| 99久久国产综合精品女不卡| 国产精品久久777777换脸|