作用域例題集

2021-09-29 12:13:28 字數 1630 閱讀 8268

題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個相同...