作用域 作用域鏈 閉包

2021-10-01 01:24:32 字數 420 閱讀 9789

閉包概念中的一些專業名詞概念不清晰

作用域鏈:本質是乙個指向變數物件的指標列表。函式的作用域鏈在函式呼叫完成後即被銷毀。

變數物件:

全域性變數物件(js執行時一直存在)。

活動變數物件(區域性變數物件,函式執行完畢後銷毀)。函式在呼叫時建立本地的活動物件加上函式定義時預建立的作用域鏈,形成乙個新的用於執行函式的作用域鏈。

閉包的定義不清晰

函式定義時的作用域鏈到函式呼叫時仍然有效

有權訪問另乙個函式作用域中變數的函式

閉包帶來的影響

閉包會影響到記憶體的占用

dom物件的迴圈引用

函式作用域根據函式定義時確定。

this關鍵字指向根據函式

定義: 函式呼叫時新建物件儲存變數物件

每次呼叫函式時,都會建立乙個新的作用域鏈

作用域,閉包,作用域鏈

一,作用域 變數在宣告它的函式及該函式所巢狀的任意函式是有定義的 例var num 2 function fun fun 二,作用域鏈 多個函式巢狀在一起,多個作用域相互巢狀,這是作用域鏈 var num 1 function fun function fun2 fun1 fun2 fun 訪問原則...

作用域鏈 閉包

什麼是閉包?js語言的特點之一是 內部函式可以訪問全域性變數的值,而外部函式不能訪問內部變數的值。function test b test 輸出123反過來,如果a變數在函式b內部的話,test函式是訪問不到的。內層函式實際上可以訪問外部的所有變數的值,在函式內部取值的時候,優先從自己的函式塊中查詢...

簡述JS作用域 作用域鏈和閉包

定義 乙個變數的作用域是程式源 中定義這個變數的區域。全域性變數擁有全域性作用域,區域性變數只有區域性作用域。塊級作用域 在es6 let變數宣告出來之前,js是沒有塊級作用域的概念的,函式內部定義的變數才是區域性變數,具體見下面的 var a 1 for var i 0 i 10 i functi...