暗示全域性變數GO AO

2022-06-14 21:00:14 字數 850 閱讀 6568

1.go:global object 全域性上下文

說白了,其實go就是window。

var a = 1;

function a()

console.log(a)

可以看到列印結果是1。那麼它的演變過程可以理解為

go: -> 1

}

總結一下:

找變數找函式宣告

執行測試一下:

console.log(a,b)

function a()

var b = function(){}

結果是什麼?

按照之前說的go預編譯順序分析一下:

go:

}

執行結果為  a -> function(){}   b:undefined

2.接下來說一下ao:activation object  活躍物件/函式上下文

看個例子:

function test(a)

console.log(a);

var b = function(){}

console.log(b);

function d(){}

}test(2);

執行函式test(2),列印結果會是什麼?先不要著急,後面會輸出日誌,自己先試一下。

分析一下,看下預編譯步驟

首先尋找函式的形參和變數宣告

把實參的引數值賦值給形參

尋找函式宣告,賦值函式體

執行函式

static全域性變數 全域性變數

1 全域性變數 外部變數 的說明之前再冠以static 就構成了靜態的全域性變數。全域性變數本身就是靜態儲存方式,靜態全域性變數當然也是靜態儲存方式。這兩者在儲存方式上並無不同。這兩者的區別在於非靜態全域性變數的作用域是整個源程式,當乙個源程式由多個原始檔組成時,非靜態的全域性變數在各個原始檔中都是...

全域性變數和靜態全域性變數

全域性變數和區域性變數是從變數的作用域的角度劃分。靜態變數和動態變數是從變數的記憶體分配的角度劃分。全域性變數本身就是靜態儲存方式,靜態全域性變數當然也是靜態儲存方式。這兩者在儲存方式上並無不同,區別在於非靜態全域性變數的作用域是整個源程式,當乙個源程式由多個原始檔組成時,非靜態的全域性變數在各個原...

c 全域性變數 靜態全域性變數

全域性變數是靜態儲存方式,靜態全域性變數也是靜態儲存方式,這兩者在儲存方式上並無不同。區別 雖在於非靜態全域性變數的作用域是整個源程式,當乙個源程式由多個原始檔組成時,靜態全域性變數在各個原始檔中都是有效的。靜態區域性變數則限制了其作用域,只在定義該變數的原始檔內有效,在同一源程式的其它原始檔中不能...