国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JavaScript運行過程中的“預編譯階段”和“執行階段”

2024-05-06 16:26:27
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了JavaScript運行過程中的“預編譯階段”和“執行階段”的相關資料,需要的朋友可以參考下
 

 javascript相對于其它語言來說是一種弱類型的語言,在其它如java語言中,程序的執行需要有編譯的階段,而在javascript中也有類似的“預編譯階段”(javascript的預編譯是以代碼塊為范圍<script></script>,即每遇到一個代碼塊都會進行  預編譯>執行),了解javascript引擎的執行機理,將有助于在寫js代碼過程中的思路總結

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

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

<script>  var a = "1";    //聲明變量a function b(){    //聲明方法b    alert();  }  var c = function(){ //聲明變量c    alert();  }</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:javascript的預編譯

     一、先預定義變量,再預定義函數

  二、變量的預編譯只作聲明,不作初始化,初始化在執行時

   三、function語句定義的函數,不僅聲明了函數名,而且函數體也進行了處理

  四、匿名函數不會預編譯

function f(){      // 聲明函數f  return 1; } alert(f());       // 返回1 var f = function(){    // 定義匿名函數f  return 2; } alert(f());       // 返回2 

先預定義了變量f,然后同名函數f()覆蓋了變量f,所以第一次輸出1;變量的預編譯

var f = function(){    // 定義匿名函數f  return 1; } alert(f());       // 返回1 function f(){      // 聲明函數f  return 2; } alert(f());      // 返回1 

先預定義了變量f,然后同名函數f()覆蓋了變量f.



注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 延津县| 长沙市| 攀枝花市| 汽车| 炎陵县| 柳江县| 聂荣县| 富平县| 仙游县| 宜兰市| 呼图壁县| 那坡县| 紫阳县| 乌兰浩特市| 章丘市| 镇安县| 周宁县| 泰安市| 阿拉善盟| 闻喜县| 元谋县| 顺昌县| 乌审旗| 吉安市| 黑水县| 桐乡市| 剑河县| 乌海市| 禹州市| 镇安县| 康马县| 延长县| 万山特区| 宜川县| 莱芜市| 墨玉县| 无棣县| 龙里县| 周至县| 绥滨县| 阳谷县|