a =
100;
function
demo
(e) arguments[0]
=2console.
log(e)
//2if
(a)}
var c
a =10var a
console.
log(b)
//undefined
f =123
console.
log(c)
//function c(){}
console.
log(a)
// 10
}var a
demo(1
) console.
log(a)
// 100
console.
log(f)
//123
// 建立go{}
// 尋找形參和變數宣告 go
// 形參和實參相統一 go
// 尋找函式宣告 go}
// 自上而下執行**
// go}
// 碰到函式demo()跳過
// 執行demo(1)
// 函式demo()
// 步驟一 建立自己的ao
// 步驟二 ao
// 步驟三 ao
// 步驟四 ao;b:undefined;c:function c(){};a:undefined}
// 自上而下逐行執行**
// arguments[0] = 2改變的是e的值
// f = 123 未經宣告,歸go所有
JS預編譯 函式預編譯和全域性預編譯
預編譯發生在函式執行前一步 建立ao物件 執行期上下文 找形參和變數宣告,將變數和形參名作為ao 屬性名,值為undefined 將實參值和形參統一 在函式體裡面找函式宣告,值賦予函式體 結果 預編譯過程 函式馬上要執行,但是還沒執行 首先建立ao物件,也就是函式它產生的儲存空間庫 ao,b und...
預編譯與編譯
一c c 源 從最初的文字變為可執行檔案主要進行三大步 預編譯階段 主要是編譯器執行 文字處理工作,並不會進行語法檢查 主要執行三大類預編譯命令 巨集定義 文字替換功能,將使用了巨集的地方採取巨集定義方式直接展開 條件編譯 文字剪下功能,根據設定的條件選擇性刪除一些 片段 包含檔案 文字插入功能 i...
什麼是預編譯?何時需要預編譯?
什麼是預編譯 預編譯又稱為預處理 是做些 文字的替換工作。處理以 開頭的指令 比如拷貝 include 包含的檔案 define 巨集定義的替換 條件編譯等,就是為編譯做的預備工作的階段。主要處理 開始的預編譯指令,預編譯指令指示了在程式正式編譯前就由編譯器進行的操作,可以放在程式中的任何位置。c ...