瀏覽器執行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
- 【總結】瀏覽器的執行緒與程式瀏覽器執行緒
- Linux基礎命令---lynx瀏覽器Linux瀏覽器
- Linux基礎命令---elinks文字瀏覽器Linux瀏覽器
- 【譯】Go和WebAssembly:在瀏覽器中執行Go程式GoWeb瀏覽器
- 在瀏覽器中執行vscode -DEV瀏覽器VSCodedev
- 瀏覽器EventLoop執行過程解析瀏覽器OOP
- 瀏覽器多執行緒和js單執行緒瀏覽器執行緒JS
- JavaScript瀏覽器事件物件JavaScript瀏覽器事件物件
- 谷歌瀏覽器禁用JavaScript谷歌瀏覽器JavaScript
- CheerpX:使用 WebAssembly 在瀏覽器中執行任何程式語言Web瀏覽器
- 從程式和執行緒瞭解瀏覽器的工作原理執行緒瀏覽器
- webkit 瀏覽器內幕之渲染基礎WebKit瀏覽器
- js程式碼判斷瀏覽器JS瀏覽器
- JavaScript 使用者代理檢測(瀏覽器型別檢測,執行平臺檢測等) 規範程式碼JavaScript瀏覽器型別
- 如何在瀏覽器中執行 VS Code?瀏覽器
- 通過 WebAssembly 在瀏覽器執行 PHPWeb瀏覽器PHP
- 程式執行緒篇——程式執行緒基礎執行緒
- 指令碼執行 py 檔案,該如何調整瀏覽器大小?指令碼瀏覽器
- 急速 debug 實戰一(瀏覽器-基礎篇)瀏覽器
- 瀏覽器執行緒執行順序,瞭解一下瀏覽器執行緒
- 谷歌瀏覽器程式碼格式化谷歌瀏覽器
- JS在瀏覽器中的執行機制JS瀏覽器
- Ooui:在瀏覽器中執行.NET應用UI瀏覽器
- 從瀏覽器環境到JavaScript執行流程的一次簡單梳理瀏覽器JavaScript
- Edge瀏覽器 再爆0day,可遠端執行程式碼瀏覽器行程
- js程式碼清楚瀏覽器資源clearCacheJS瀏覽器
- 瀏覽器預設樣式程式碼收集瀏覽器
- 通過瀏覽器執行cmd命令、啟動steam瀏覽器
- javascript事件迴圈(瀏覽器/node)JavaScript事件瀏覽器
- JavaScript 複習之瀏覽器模型JavaScript瀏覽器模型
- 手把手提高基礎程式碼執行效率