
了解 JavaScript 的核心概念可以讓開發人員達到一個全新的水平,JavaScript 最重要的概念之一是執行上下文,它無處不在——每次你開始使用 JavaScript 創建東西時,無論你是否知道,你都會在后臺使用它。每次新應用程序啟動時,每次執行函數時,執行上下文都會在那里。那么,什么是執行上下文。
執行上下文允許 JavaScript 引擎管理解釋和運行代碼的復雜性。執行上下文是一個抽象概念,它包含有關當前代碼正在執行的環境的信息。我們有三種不同類型的JavaScript 執行上下文:全局執行上下文——這個執行上下文由 JavaScript 引擎默認創建。函數執行上下文 - 每當執行函數時都會創建此執行上下文。eval 執行上下文——這個執行上下文是在一個 eval 函數中創建的。
1. 全局執行上下文
第一個執行上下文是在 JavaScript 引擎運行您的代碼時創建的。 JavaScript 引擎在執行任何代碼之前都會創建一個新的執行上下文,這個新的執行上下文稱為全局執行上下文。全局執行上下文是 JavaScript 引擎創建的默認執行上下文。所有不在函數或對象內的全局代碼都將在全局執行上下文中執行。
每個執行上下文(不僅僅是全局上下文)都將包含兩件事:A global object——提供在當前環境中任何地方都可用的變量和函數。在瀏覽器中,全局對象被命名為window,使用 Node.js 時,全局對象被命名為 global。A this object – this 關鍵字指向代碼所屬的當前執行上下文對象。
即使我們沒有編寫任何代碼,JavaScript 引擎仍然會創建一個全局執行上下文。 JavaScript 是一種單線程編程語言,因此 JavaScript 執行不可能有多個全局執行上下文。最初,全局執行上下文有兩個階段:創建——在這個階段,全局對象和 this 關鍵字被創建。 為創建的變量和函數分配內存。 你可以看到我們的變量持有“未定義”的值。執行——在這個階段,代碼的執行開始了。 在我們的示例中,我們為變量賦值并定義了函數。
2. 函數執行上下文
執行函數時會創建函數執行上下文。創建的新執行上下文是函數執行上下文。它具有相同的階段,我們可以訪問一個稱為參數的特殊值。參數值是我們在執行函數時傳遞給函數的參數。一個函數可以在其中執行一個函數,依此類推。每次執行函數時,都會創建一個新的函數執行上下文。
3. eval 執行上下文
創建 eval 函數是為了將字符串轉換為可執行的 JavaScript 代碼。雖然看起來很強大,但不建議使用這個功能,因為我們無法控制它的權限。eval 函數的使用可能會使您的應用程序或服務受到注入攻擊。 eval 函數接收到的字符串可能是惡意字符串,可以完全破壞您的數據庫或應用程序。這就是為什么不推薦使用 eval 函數的原因。
JavaScript 的核心概念可以徹底改變開發現代應用程序的游戲規則。執行上下文是了解 JavaScript 代碼如何在后臺運行的一個非常重要的概念。它存在于每個編寫的 JavaScript 代碼中,它是學習其他 JavaScript 概念(如提升、閉包、作用域等)的要求之一。 注:尊重原創文章,轉載請注明出處和鏈接 http://m.dedgn.cn/news-id-20832.html 違者必究!部分文章來源于網絡由培訓無憂網編輯部人員整理發布,內容真實性請自行核實或聯系我們,了解更多相關資訊請關注web前端頻道查看更多,了解相關專業課程信息您可在線咨詢也可免費申請試課。關注官方微信了解更多:150 3333 6050