最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2015年12月16日 15:11:24   投稿:mrr  
這篇文章主要介紹了JavaScript運行過程中的“預編譯階段”和“執(zhí)行階段”的相關(guān)資料,需要的朋友可以參考下

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

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

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

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

以上代碼塊中,a、c為變量賦值,b為函數(shù)聲明,當執(zhí)行以上的代碼時,首先會進入預編譯階段,對與變量賦值a、c會在內(nèi)存中開辟一塊內(nèi)存空間并指向變量名,且賦值為undefined

對于函數(shù)聲明,則同樣會進行開辟內(nèi)存空間,但賦值的對象會將聲明的函數(shù)賦值給函數(shù)名

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

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

 執(zhí)行階段:

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

整體執(zhí)行步驟:

<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的預編譯

     一、先預定義變量,再預定義函數(shù)

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

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

  四、匿名函數(shù)不會預編譯

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

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

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

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

相關(guān)文章

  • Javascript技術(shù)難點之a(chǎn)pply,call與this之間的銜接

    Javascript技術(shù)難點之a(chǎn)pply,call與this之間的銜接

    這篇文章主要介紹了Javascript技術(shù)難點之a(chǎn)pply,call與this之間的銜接的相關(guān)資料,需要的朋友可以參考下
    2015-12-12
  • require導入module.exports 或 exports導出的使用方法

    require導入module.exports 或 exports導出的使用方法

    module.exports用于導出整個模塊的內(nèi)容,可以通過賦值給 module.exports 導出一個對象、函數(shù)或值,導出的內(nèi)容可以被其他模塊通過require 導入,本文給大家介紹require導入module.exports 或 exports導出的使用,感興趣的朋友一起看看吧
    2023-11-11
  • Servlet返回的數(shù)據(jù)js解析2種方法

    Servlet返回的數(shù)據(jù)js解析2種方法

    這篇文章主要介紹了Servlet返回的數(shù)據(jù)js解析2種方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • 詳解JavaScript中任意兩數(shù)加減的解決方案

    詳解JavaScript中任意兩數(shù)加減的解決方案

    JavaScript中一些浮點數(shù)相加減會計算錯誤,本文將為大家具體介紹一下JavaScript中解決任意兩數(shù)加減會出現(xiàn)錯誤的方案,需要的可以參考一下
    2022-02-02
  • js獲取修改title與jQuery獲取修改title的方法

    js獲取修改title與jQuery獲取修改title的方法

    這篇文章主要介紹了js獲取修改title與jQuery獲取修改title的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-02-02
  • 使用JS+plupload直接批量上傳圖片到又拍云

    使用JS+plupload直接批量上傳圖片到又拍云

    本文詳細介紹了通過js+plupload實現(xiàn)了繞過服務(wù)器,向又拍云批量上傳圖片的解決方法,十分的巧妙,也節(jié)省了服務(wù)器資源,這里推薦給有需要的小伙伴。
    2014-12-12
  • 談?wù)勎覍avaScript DOM事件的理解

    談?wù)勎覍avaScript DOM事件的理解

    DOM與事件是JavaScript最核心的組成部分之一,他們賦予了頁面無限的想象空間,你根本無法離開他們,否則js將寸步難行。本文給大家分享我對javascript dom事件的了解,對javascript dom事件相關(guān)知識感興趣的朋友一起學習吧
    2015-12-12
  • js 創(chuàng)建對象 經(jīng)典模式全面了解

    js 創(chuàng)建對象 經(jīng)典模式全面了解

    下面小編就為大家?guī)硪黄猨s 創(chuàng)建對象 經(jīng)典模式全面了解。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-08-08
  • 去掉gridPanel表頭全選框的小例子

    去掉gridPanel表頭全選框的小例子

    這篇文章介紹了去掉gridPanel表頭全選框的小例子,有需要的朋友可以參考一下
    2013-07-07
  • JS開發(fā)自己的類庫實例分析

    JS開發(fā)自己的類庫實例分析

    這篇文章主要介紹了JS開發(fā)自己的類庫,結(jié)合實例形式分析了javascript開發(fā)類庫的原理、組成及實現(xiàn)方法,需要的朋友可以參考下
    2019-08-08

最新評論

长治县| 界首市| 宣武区| 荔浦县| 应城市| 甘孜县| 英超| 田林县| 宾川县| 长丰县| 中方县| 株洲市| 呼玛县| 邓州市| 漳浦县| 汉阴县| 永宁县| 琼海市| 丹阳市| 木兰县| 航空| 都兰县| 东乡县| 饶河县| 保山市| 溆浦县| 托克托县| 黔西| 济宁市| 蓬莱市| 巴青县| 南乐县| 万山特区| 万年县| 北碚区| 青田县| 苗栗市| 保康县| 聂拉木县| 兴城市| 鱼台县|