閉包:函式中的函式;用於獲取函式內部變數的函式;
function a()return b;
}console.log(info) // 報錯(info is not defined)
console.log(a()()) // "hello"
在全域性作用域中,如果想訪問a函式中的變數info,直接訪問會報錯,因為a函式體是個作用域,父作用域無法訪問子作用域中的變數;
但是可以通過閉包的形式訪問a函式中的變數;
注意:
由於閉包會攜帶包含它的函式的作用域(儲存著乙個作用域鏈),因此會占用更多的記憶體;
函式表示式 閉包
有權訪問另乙個函式作用域內變數的函式。常見的方式就是在乙個函式的內部建立另外乙個函式。functiona b a a內的b可以訪問a的內部變數color 閉包只能取到包含函式中任何變數的的最後乙個值。function a return arr console.log a 0 10 console.l...
函式 函式表示式 作用域 閉包
var f function function f 函式宣告和函式表示式的主要區別是,函式宣告會被前置,而函式表示式作為變數,會被提公升。下方是js執行時的邏輯 前置和變數提公升 var f function f f function var f function function f f 上方 直...
函式表示式(1) 含閉包
定義函式的方法有兩種,一種是函式宣告,一種是函式表示式 函式宣告 function 函式表示式 他們兩個不同的地方在於,函式宣告會有乙個提公升 相當於會在執行 前讀取函式宣告 而函式表示式不會有 函式宣告 function 函式表示式 在函式表示式中,就像變數一樣,會被賦予undefined值,而不...