javascript 預(yù)編譯

######預(yù)編譯前奏

1.imply global 暗示全局變量:即任何變量未經(jīng)聲明就賦值,則此變量就為全局對象(window)所有。

eg: ```? a=3; ```

eg:? ``` var a=b=123; ```

eg: ``` var a = 1;

? b = 2;

? function test() {

? ? ? var c = d = 9;

? }

? test();

? consolo.log(c); //error

? console.log(d); //undifend

? ```

2.一切聲明的全局bian'liang變量,quan'shi全是windowde屬性的

eg:? ``` var a=123 =====>window.a=123 ```

######預(yù)編譯 四部曲

函數(shù)預(yù)編譯發(fā)生在函數(shù)發(fā)生前一刻,

①函數(shù)體創(chuàng)建AO(Activation object 也叫執(zhí)行期上下文)對象

②找形參和變量聲明,將變量和形參名作為AO屬性名,值為undefined

③將實(shí)參值和形參統(tǒng)一

④在函數(shù)體里面找函數(shù)聲明,值賦予函數(shù)體

全局的預(yù)編譯:

①函數(shù)體創(chuàng)建GO對象

②找變量聲明,將變量名作為GO屬性名,值為undefined

③找函數(shù)聲明,值賦予函數(shù)體

④代碼走到每一步,執(zhí)行每行代碼(賦值操作等)

eg:

```

? ? var a = 100;

? ? var b = 200;

? ? console.log("f=" + f);// f=function f() { }

? ? var f = 100;

? ? console.log("f=" + f);// f=100

? ? function f() { }

? ? console.log(f);// 100

? ? function fn(a) {

? ? ? ? console.log("a =" + a)? //a=function a() { }

? ? ? ? if (a) {

? ? ? ? ? ? a = 400;

? ? ? ? ? ? function e() {

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? console.log(a);// 400

? ? ? ? function a() { }

? ? ? ? console.log(a);// 400

? ? ? ? console.log(b);// undefined

? ? ? ? var b = function () { }

? ? ? ? console.log(b);? //function b()

? ? ? ? function d() {

? ? ? ? }

? ? }

? ? fn(300);

//---------------------全局GO 流程--------------------------

? ? // ②GO{

? ? //? ? a:undefined,

? ? //? ? b:undefined,

? ? //? ? f:undefined,

? ? // }

? ? // ③ GO{

? ? //? ? a:100,

? ? //? ? b:200,

? ? //? ? f:? function f() { }

? ? // }

? ? // ④代碼執(zhí)行到某一行,某一行的變量就被賦值

? ? //----------------fn AO 流程-------------------------------

? ? // fn函數(shù)執(zhí)行前預(yù)編譯

? ? // ②AO{

? ? //? ? a:undefined,

? ? //? ? b:undefined,

? ? //? ? d:undefined,

? ? //? ? e:undefined

? ? // }

? ? //③ AO{

? ? //? ? a:300

? ? //? ? b:undefined,

? ? //? ? d:undefined,

? ? //? ? e:undefined

? ? // }

? // ④AO{

? ? //? ? a: function a() { }

? ? //? ? b:undefined,

? ? //? ? d: function d() { }

? ? //? ? e:function e() { }

? ? // }

? ? //⑤代碼走到哪一句,如果有賦值就賦值

```

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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

  • js運(yùn)行三部曲 語法分析 預(yù)編譯 解釋執(zhí)行 預(yù)編譯前奏 imply global 暗示全局變量, 即任何變量, 如...
    劉翾閱讀 608評論 0 1
  • 《ijs》速成開發(fā)手冊3.0 官方用戶交流:iApp開發(fā)交流(1) 239547050iApp開發(fā)交流(2) 10...
    葉染柒丶閱讀 5,635評論 0 7
  • JavaScript 是一門腳本語言,其可以不經(jīng)過編譯而直接運(yùn)行(這點(diǎn)與 Java 不同,Java 需要編譯之后才...
    AshengTan閱讀 2,126評論 2 9
  • 可以下班了,今天把黨內(nèi)年報在系統(tǒng)上校核好上報提交了,斷斷續(xù)續(xù)加班加點(diǎn)大概有兩周時間,涉及信息錄入、核對、報錯、反查...
    小梅弄堂閱讀 123評論 0 0
  • 靈魂會生病嗎?因?yàn)槿怏w的關(guān)系,靈魂會不會也會殘疾和衰老呢?當(dāng)肉體不能承受靈魂的折磨時,是肉體的悲哀還是靈魂的屈辱?...
    儲建明閱讀 1,152評論 0 0

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