瀏覽器執行javaScript程式碼基礎
JavaScript 程式碼執行分為兩個階段:
編譯階段和執行階段
相關概念
- 編譯結果:輸入一段程式碼,經過編譯後,會生成兩部分內容:執行上下文(Execution context)和可執行程式碼
- 基礎變數儲存在棧(執行上下文)中,物件、陣列、函式儲存到堆 (HEAP)中,在棧空間中只是保留了物件的引用地址,當 JavaScript 需要訪問該資料的時候,是通過棧中的引用地址來訪問的
- 執行上下文:JavaScript 執行一段程式碼時的執行環境,比如呼叫一個函式,就會進入這個函式的執行上下文,確定該函式在執行期間用到的諸如 this、變數、物件以及函式等
- 呼叫棧:會存在多個執行上下文,在執行上下文建立好後,JavaScript 引擎會將執行上下文壓入棧中
- 棧溢位:呼叫棧是有大小的,當入棧的執行上下文超過一定數目,JavaScript 引擎就會報錯
- 編譯階段會存在變數提升
- 作用域:作用域是指在程式中定義變數的區域,該位置決定了變數的生命週期。在 ES6 之前,ES 的作用域只有兩種:全域性作用域和函式作用域。全域性作用域中的物件在程式碼中的任何地方都能訪問,其生命週期伴隨著頁面的生命週期。函式作用域就是在函式內部定義的變數或者函式,並且定義的變數或者函式只能在函式內部被訪問。函式執行結束之後,函式內部定義的變數會被銷燬。ES6之後,存在塊級作用域,就是使用一對大括號包裹的一段程式碼,比如函式、判斷語句、迴圈語句,甚至單獨的一個{}都可以被看作是一個塊級作用域。
- 閉包:當通過呼叫一個外部函式返回一個內部函式後,即使該外部函式已經執行結束了,但是內部函式引用外部函式的變數依然儲存在記憶體中,我們就把這些變數的集合稱為閉包。
- this: 在物件內部的方法中使用物件內部的屬性是一個非常普遍的需求。但是 JavaScript 的作用域機制並不支援這一點,基於這個需求,JavaScript 又搞出來另外一套 this 機制。ES6 中的箭頭函式並不會建立其自身的執行上下文,所以箭頭函式中的 this 取決於它的外部函式。普通函式中的 this 預設指向全域性物件 window。
相關文章
- 瀏覽器渲染程式多執行緒瀏覽器執行緒
- JavaScript 執行機制-瀏覽器事件迴圈JavaScript瀏覽器事件
- 重學瀏覽器(1)-多程式多執行緒的瀏覽器瀏覽器執行緒
- 瀏覽器執行原理瀏覽器
- 瀏覽器執行緒瀏覽器執行緒
- JavaScript中的瀏覽器檢測和DOM基礎JavaScript瀏覽器
- 如何在瀏覽器中測試JavaScript程式碼?瀏覽器JavaScript
- 檢測360瀏覽器javascript程式碼例項瀏覽器JavaScript
- javascript判斷uc瀏覽器程式碼例項JavaScript瀏覽器
- 使用瀏覽器命令列編寫JavaScript程式碼瀏覽器命令列JavaScript
- 【總結】瀏覽器的執行緒與程式瀏覽器執行緒
- 使用javascript判斷瀏覽器核心程式碼例項JavaScript瀏覽器
- javascript獲取瀏覽器視窗尺寸程式碼片段JavaScript瀏覽器
- JavaScript禁止瀏覽器預設行為JavaScript瀏覽器
- Linux基礎命令---lynx瀏覽器Linux瀏覽器
- javascript獲取瀏覽器視口尺寸程式碼例項JavaScript瀏覽器
- 瀏覽器EventLoop執行過程解析瀏覽器OOP
- 【譯】Go和WebAssembly:在瀏覽器中執行Go程式GoWeb瀏覽器
- 瀏覽器多執行緒和js單執行緒瀏覽器執行緒JS
- js檢測搜狗瀏覽器、百度瀏覽器、微信瀏覽器程式碼例項JS瀏覽器
- webkit 瀏覽器內幕之渲染基礎WebKit瀏覽器
- javascript相容火狐等各瀏覽器的innerText屬性程式碼JavaScript瀏覽器
- 谷歌瀏覽器禁用JavaScript谷歌瀏覽器JavaScript
- JavaScript瀏覽器事件物件JavaScript瀏覽器事件物件
- JavaScript 瀏覽器事件解析JavaScript瀏覽器事件
- js程式碼判斷瀏覽器JS瀏覽器
- 如何在瀏覽器中執行 VS Code?瀏覽器
- 通過 WebAssembly 在瀏覽器執行 PHPWeb瀏覽器PHP
- 從程式和執行緒瞭解瀏覽器的工作原理執行緒瀏覽器
- javascript基礎(BOM常用物件:navigtor,判斷瀏覽器的常用方法,和區分IE瀏覽器的方法)(三十九)JavaScript物件瀏覽器
- Linux基礎命令---elinks文字瀏覽器Linux瀏覽器
- JavaScript 使用者代理檢測(瀏覽器型別檢測,執行平臺檢測等) 規範程式碼JavaScript瀏覽器型別
- javascript判斷當前瀏覽器是不是微信瀏覽器JavaScript瀏覽器
- 程式執行緒篇——程式執行緒基礎執行緒
- 一行程式碼,瀏覽器變臨時編輯器行程瀏覽器
- javascript相容各個瀏覽器的獲取事件源物件程式碼JavaScript瀏覽器事件物件
- javascript判斷瀏覽器的型別和版本程式碼例項JavaScript瀏覽器型別
- 判斷瀏覽器型別和版本的javascript程式碼例項瀏覽器型別JavaScript