js- 預(yù)編譯,GO,AO

console.log(a)  //functiona(){   var a = 'a';}
// a = 'test';

function a(){
    console.log(b)
    a = 'a'; // 暗示全局變量
    function b (){

    }
}
a(); 
console.log(a)

輸出:

function a(){
    console.log(b)
    a = 'a'; 
    function b (){
    }
}
function b(){

} 
a

原因:

  • js執(zhí)行前會(huì)進(jìn)行預(yù)編譯
    • 全局預(yù)編譯GO(Global Object)
      • 創(chuàng)建GO對(duì)象
      • 給全局變量賦值 undefined GO{a: undefined}
      • 將全局的函數(shù)申明的函數(shù)名作為key,value為函數(shù)整體賦值到GO對(duì)象中
        • GO{a:function a(){
          ? console.log(b)
          ? a = 'a'; // 暗示全局變量
          ? function b (){}
          }}
    • 函數(shù)預(yù)編譯AO (Activation Object)
      • 創(chuàng)建AO對(duì)象
      • 將函數(shù)內(nèi)的形參和變量聲明存儲(chǔ)到AO對(duì)象中,值為undefined
      • 將實(shí)參和形參統(tǒng)一
      • 將函數(shù)內(nèi)的函數(shù)申明的名稱作為AO對(duì)象的key,函數(shù)的整體內(nèi)容為value 存儲(chǔ)到AO對(duì)象
        • AO{b:function b(){}}

說(shuō)明

  • GO=window對(duì)象,GO即操作window,a為全局變量,console.log(a) = console.log(window.a)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1、基本常識(shí) 瀏覽器的組成:1)shell部分 2)內(nèi)核部分:(1)渲染引擎(語(yǔ)法規(guī)則...
    MrLsss閱讀 360評(píng)論 0 4
  • 1.一個(gè)功能抽象為一個(gè)函數(shù),單獨(dú)提取出來(lái),達(dá)到復(fù)用的目的。 2.遞歸,先執(zhí)行的最后執(zhí)行完。 3.定義在全局的叫全局...
    Sune小葉子閱讀 614評(píng)論 0 0
  • 第一章 錯(cuò)誤處理: 錯(cuò)誤: 程序運(yùn)行過(guò)程中,導(dǎo)致程序無(wú)法正常執(zhí)行的現(xiàn)象(即bug) 現(xiàn)象: 程序一旦出錯(cuò),默認(rèn)會(huì)報(bào)...
    fastwe閱讀 1,250評(píng)論 0 1
  • 函數(shù): 封裝代碼實(shí)現(xiàn)某個(gè)功能,最初思路解決代碼重復(fù)度高的問(wèn)題,類似于變量(就是一個(gè)筐,往里面填充內(nèi)容即可) 【編程...
    官清歲月閱讀 368評(píng)論 0 0
  • 概要 64學(xué)時(shí) 3.5學(xué)分 章節(jié)安排 電子商務(wù)網(wǎng)站概況 HTML5+CSS3 JavaScript Node 電子...
    阿啊阿吖丁閱讀 9,828評(píng)論 0 3

友情鏈接更多精彩內(nèi)容