日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

javascript运行过程中的“预编译阶段”和“执行阶段”

發布時間:2025/6/15 javascript 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 javascript运行过程中的“预编译阶段”和“执行阶段” 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

javascript相對于其它語言來說是一種弱類型的語言,在其它如java語言中,程序的執行需要有編譯的階段

而在javascript中也有類似的“預編譯階段”(javascript的預編譯是以代碼塊為范圍<script></script>,即每遇到一個代碼塊都會進行 ?預編譯>執行),

了解javascript引擎的執行機理,將有助于在寫js代碼過程中的思路總結

首先科普下javascript中的兩種聲明方式,var和function,前者聲明的是變量,后者聲明的是方法

在預編譯中,javascript對這兩種聲明做出了兩種處理方案

<script>var a = "1";    //聲明變量afunction b(){    //聲明方法balert();}var c = function(){ //聲明變量calert();}</script>

?

以上代碼塊中,a、c為變量賦值,b為函數聲明,當執行以上的代碼時,

首先會進入預編譯階段,

對與變量賦值a、c會在內存中開辟一塊內存空間并指向變量名,且賦值為undefined

對于函數聲明,則同樣會進行開辟內存空間,但此時會直接將函數體進行處理,即用函數聲明方式,則在預編譯階段便已完成了函數的創建工作

預編譯階段:(PS:不管代碼中聲明變量和聲明函數的順序如何,在預編譯階段會先聲明變量,再聲明函數

<script>var a = undefined;var c = undefined;
    
    var b = function(){alert();} </script>

?

執行階段:

<script>a = "1";c = function(){alert();} </script>

?

整體執行步驟:

<script>var a = undefined;var c = undefined;var b = function(){alert();}a = "1";c = function(){alert();} </script>

題目:

<script>var a = "1";function b(){alert(a);var a = "2";}b();</script>

PS:相對與window環境下的變量、函數聲明,每一個作用域都會對其下的變量和函數進行先聲明

<script> functionHello() { alert("Hello"); } Hello(); </script> <script> functionHello() { alert("Hello World"); } Hello(); </script> <script>
  function Hello() { alert("Hello"); } Hello();   function Hello() { alert("Hello World"); } Hello(); </script>

總結

以上是生活随笔為你收集整理的javascript运行过程中的“预编译阶段”和“执行阶段”的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。