了解 JavaScript 的核心概念可以讓開發人員達到一個全新的水平,JavaScript 最重要的概念之一是執行上下文,它無處不在——每次你開始使用 JavaScript 創建東西時,無論你是否知道,你都會在后臺使用它。每次新應用程序啟動時,每次執行函數時,執行上下文都會在那里。那么,什么是執行上下文?對JavaScript感興趣的同學,可以參加Web前端培訓,幾個月的學習就能掌握全面系統的知識和技能,快速上崗。
執行上下文允許 JavaScript 引擎管理解釋和運行代碼的復雜性。執行上下文是一個抽象概念,它包含有關當前代碼正在執行的環境的信息。
我們有三種不同類型的JavaScript 執行上下文:
全局執行上下文——這個執行上下文由 JavaScript 引擎默認創建。
函數執行上下文 - 每當執行函數時都會創建此執行上下文。
eval 執行上下文——這個執行上下文是在一個 eval 函數中創建的。
1. 全局執行上下文
第一個執行上下文是在 JavaScript 引擎運行您的代碼時創建的。 JavaScript 引擎在執行任何代碼之前都會創建一個新的執行上下文,這個新的執行上下文稱為全局執行上下文。
全局執行上下文是 JavaScript 引擎創建的默認執行上下文。所有不在函數或對象內的全局代碼都將在全局執行上下文中執行。在Web前端培訓中,有理論課程+實踐項目一起學習,深化所學知識,積累項目經驗,獲得快速提升。
每個執行上下文(不僅僅是全局上下文)都將包含兩件事:
A global object——提供在當前環境中任何地方都可用的變量和函數。在瀏覽器中,全局對象被命名為window,使用 Node.js 時,全局對象被命名為 global。
A this object – this 關鍵字指向代碼所屬的當前執行上下文對象。
即使我們沒有編寫任何代碼,JavaScript 引擎仍然會創建一個全局執行上下文。 JavaScript 是一種單線程編程語言,因此 JavaScript 執行不可能有多個全局執行上下文。
最初,全局執行上下文有兩個階段:
創建——在這個階段,全局對象和 this 關鍵字被創建。 為創建的變量和函數分配內存。 你可以看到我們的變量持有“未定義”的值。
執行——在這個階段,代碼的執行開始了。 在我們的示例中,我們為變量賦值并定義了函數。
2. 函數執行上下文
執行函數時會創建函數執行上下文。
創建的新執行上下文是函數執行上下文。它具有相同的階段,我們可以訪問一個稱為參數的特殊值。參數值是我們在執行函數時傳遞給函數的參數。參加Web前端培訓,可以讓你學到很多JavaScript知識和技能,有經驗豐富的專業講師面授指導教學,實時解決疑難雜癥問題,學習起來又快又有效。
一個函數可以在其中執行一個函數,依此類推。每次執行函數時,都會創建一個新的函數執行上下文。
3. eval 執行上下文
創建 eval 函數是為了將字符串轉換為可執行的 JavaScript 代碼。雖然看起來很強大,但不建議使用這個功能,因為我們無法控制它的權限。
eval 函數的使用可能會使您的應用程序或服務受到注入攻擊。 eval 函數接收到的字符串可能是惡意字符串,可以完全破壞您的數據庫或應用程序。這就是為什么不推薦使用 eval 函數的原因。
JavaScript 的核心概念可以徹底改變開發現代應用程序的游戲規則。執行上下文是了解 JavaScript 代碼如何在后臺運行的一個非常重要的概念。 它存在于每個編寫的 JavaScript 代碼中,它是學習其他 JavaScript 概念(如提升、閉包、作用域等)的要求之一。想學習更多JavaScript知識和技能,不妨考慮參加Web前端培訓,可以在短時間獲得快速提升,有效提高前端開發工作效率。