題1:
functiona(
)var a =
123;b(
);}var glob =
100;a(
);預編譯狀態:
a函式被定義時,發生如下過程:
a defined a.
[[scope]]--
0:go程式執行狀態:
a函式被執行時,發生如下過程:
a handle a.
[[scope]]--
0:aao1:
go的引用
b函式被定義時,發生如下過程:
b defined a.
[[scope]]--
0:aao的引用
1:go的引用
b函式被執行時,發生如下過程:
b handle b.
[[scope]]--
0:bao
1:aao的引用
2:go的引用
b函式被執行完,銷毀b的執行上下文:
b handle b.
[[scope]]--
0:清空bao的引用
1:aao的引用
2:go的引用
a函式被執行完,銷毀b的執行上下文:
a handle a.
[[scope]]--
0:清空bao的引用
(由於aao中有存了b函式,因此b函式被銷毀)1:
go的引用
預編譯狀態:
程式結束,a函式回到被定義狀態:
a defined a.
[[scope]]--
0:go
問題一:
b函式執行時是把a函式ao的引用掛在及自己身上還是重新生成了
乙個a函式ao
回答:b函式執行時是把a函式ao的引用掛在及自己身上
問題二:
是否有終點,生成的執行上下文會不會消失,因為我們所知道的一
個函式執行完後會銷毀它的ao
回答:有終點,因為乙個函式執行完後會銷毀它的ao
題2:
functiona(
)c()
;}b(
);}a
();執行過程:
a defined a.
[[scope]]--
>0:
goa handle a.
[[scope]]--
>
0:aao
1:go
b defined b.
[[scope]]--
>
0:aao
1:go
b handle b.
[[scope]]--
>
0:bao
1:aao
2:go
c defined c.
[[scope]]--
>
0:bao
1:aao
2:go
c handle c.
[[scope]]--
>
0:cao
1:bao
2:aao
3:go
作用域 作用域鏈
理解 就是一塊 地盤 乙個 段所在的區域 它是靜態的 相對於上下文物件 在編寫 時就確定了 分類全域性作用域 函式作用域 沒有塊作用域 es6有了 作用隔離變數,不同作用域下同名變數不會有衝突 區別1全域性作用域之外,每個函式都會建立自己的作用域,作用域在函式定義時就已經確定了。而不是在函式呼叫時 ...
Python作用域 全域性作用域 區域性作用域
在python中,每個函式都會建立乙個作用域。pythonistas也可能稱函式擁有它們自己的命名空間 namespace 這意味著當在函式體裡遇到變數名 時,python首先在該函式的命名空間中查詢,python包含了一些讓我們檢視命名空間的函式。讓我們寫乙個簡單的函式來探查一下local和glo...
作用域,變數作用域,作用域鏈知識
第2章 變數作用域 第3章 作用域鏈 預覽 1.全域性作用域 整個script標籤下 或者是單獨的js檔案 外部js 2.區域性作用域也叫 函式作用域 在函式內部就是區域性作用域 這個 的名字 變數 只在函式內部起作用和效果 3.不同作用域下,定義相同變數名是不衝突的。如果是在同一作用域宣告2個相同...