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

JavaScript預編譯的基本概念和過程詳解

 更新時間:2024年05月17日 08:33:20   作者:憶君  
JavaScript在執(zhí)行代碼前,會進行一個預編譯的過程,這個過程主要用于處理變量和函數(shù)聲明,預編譯分為全局預編譯和函數(shù)預編譯,本文將給大家詳細的介紹一下JavaScript預編譯的基本概念和過程,需要的朋友可以參考下

全局預編譯

  • 創(chuàng)建全局對象(Global Object, GO)
    • 在瀏覽器中,全局對象是window對象。
  • 處理變量聲明
    • 找到所有的變量聲明,將變量名作為全局對象的屬性名,初始值為undefined。
  • 處理函數(shù)聲明
    • 找到所有的函數(shù)聲明,將函數(shù)名作為全局對象的屬性名,值為函數(shù)對象(整個函數(shù)體)。

示例:

console.log(a); // undefined
var a = 10;
console.log(foo); // Function: foo
function foo() {
    return "hello";
}

全局預編譯后的全局對象:

1.創(chuàng)建GO對象
GO{
    // 空對象
}

2.處理變量聲明
GO = {
    a: undefined
}

3.處理函數(shù)聲明
GO = {
    a: undefined,
    fn: function() {}
}

函數(shù)預編譯

  • 創(chuàng)建活動對象(Activation Object, AO)
    • 每次調(diào)用函數(shù)時,都會創(chuàng)建一個新的活動對象。
  • 處理形參和變量聲明
    • 將形參和變量名作為活動對象的屬性名,初始值為undefined。
  • 形參和實參統(tǒng)一
    • 將實參值賦值給對應(yīng)的形參。
  • 處理函數(shù)聲明
    • 找到所有的函數(shù)聲明,將函數(shù)名作為活動對象的屬性名,值為函數(shù)對象。

示例:

function bar(x, y) {
    console.log(x); // Function: x
    var x = 20;
    console.log(x); // 20
    function x() {}
    console.log(x); // 20
    var y = function() {};
    console.log(y); // Function: y
}
bar(2);

函數(shù)預編譯后的活動對象:

1.創(chuàng)建AO對象
AO{
    //空對象
}

2.處理形參和變量聲明,值為undefined
AO = {
    x: undefined,
    y: undefined,
}

3.實參和形參統(tǒng)一
AO = {
    x: 2,
    y: undefined
}

4.處理函數(shù)聲明
AO = {
    x: 2,
    y: function() {},
    x: function() {}
}

總結(jié)

通過預編譯,JavaScript確保在代碼執(zhí)行時,所有變量和函數(shù)都已經(jīng)聲明完畢,避免引用錯誤。這一機制是理解JavaScript作用域和提升(hoisting)的基礎(chǔ)。

到此這篇關(guān)于JavaScript預編譯的基本概念和過程詳解的文章就介紹到這了,更多相關(guān)JavaScript預編譯內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 擴展JavaScript功能的正確方法(譯文)

    擴展JavaScript功能的正確方法(譯文)

    JavaScript已經(jīng)內(nèi)置了很多強大的方法,但有時你需要的某個功能在內(nèi)置的方法中沒有,我們怎么來優(yōu)雅地擴展JavaScript功能呢
    2012-04-04
  • js實現(xiàn)橫向伸展開的二級導航菜單代碼

    js實現(xiàn)橫向伸展開的二級導航菜單代碼

    這篇文章主要介紹了js實現(xiàn)橫向伸展開的二級導航菜單代碼,涉及javascript鼠標事件及頁面元素遍歷的相關(guān)技巧,需要的朋友可以參考下
    2015-08-08
  • 原生JS京東輪播圖代碼

    原生JS京東輪播圖代碼

    這篇文章主要為大家詳細介紹了原生JS京東輪播圖代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03
  • javascript之典型高階函數(shù)應(yīng)用介紹二

    javascript之典型高階函數(shù)應(yīng)用介紹二

    在前一篇文章javascript之典型高階函數(shù)中主要實現(xiàn)了幾個典型的functional函數(shù),文章最后也提出了疑問,為啥那樣的實現(xiàn)與F#之類的函數(shù)式語言“不太一樣”呢?今天來試試更“函數(shù)式”的實現(xiàn)
    2013-01-01
  • layui-table對返回的數(shù)據(jù)進行轉(zhuǎn)變顯示的實例

    layui-table對返回的數(shù)據(jù)進行轉(zhuǎn)變顯示的實例

    今天小編就為大家分享一篇layui-table對返回的數(shù)據(jù)進行轉(zhuǎn)變顯示的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-09-09
  • 微信小程序如何連接Java后臺

    微信小程序如何連接Java后臺

    這篇文章主要介紹了微信小程序如何連接Java后臺,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • Javascript淺析執(zhí)行機制的詳情

    Javascript淺析執(zhí)行機制的詳情

    這篇文章主要介紹了JavaScript執(zhí)行機制,想要搞懂JavaScript執(zhí)行機制,便與進程與線程的概念脫不了干系,下面我們就來看看這JavaScript執(zhí)行機制的具體介紹吧,需要的朋友可以參考一下
    2022-08-08
  • js倒計時顯示實例

    js倒計時顯示實例

    本文分享了js倒計時顯示的實例,需要的朋友可以參考借鑒,下面就跟小編一起來看看吧
    2016-12-12
  • javascript垃圾收集機制與內(nèi)存泄漏詳細解析

    javascript垃圾收集機制與內(nèi)存泄漏詳細解析

    本文是對javascript中的垃圾收集機制與內(nèi)存泄漏進行了詳細的分析介紹,需要的朋友可以過來參考下,希望對大家有所幫助
    2013-11-11
  • 小程序?qū)崿F(xiàn)Token生成與驗證

    小程序?qū)崿F(xiàn)Token生成與驗證

    本文主要介紹了小程序?qū)崿F(xiàn)Token生成與驗證,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12

最新評論

柳江县| 清水河县| 三台县| 咸宁市| 邯郸市| 临城县| 平罗县| 崇信县| 玉溪市| 原阳县| 肃南| 大英县| 四平市| 新田县| 清涧县| 五河县| 宜都市| 繁峙县| 南漳县| 田阳县| 罗源县| 炎陵县| 堆龙德庆县| 元江| 铁力市| 锡林郭勒盟| 武平县| 静安区| 南投市| 天全县| 昂仁县| 资中县| 孙吴县| 拜城县| 宁远县| 宁夏| 兰溪市| 仁怀市| 名山县| 望江县| 仪征市|