閉包概念
- 閉包就是可以讀取其他函數内部變量的函數
變量的作用域
- 要了解閉包,首先要知道js特殊的變量作用域。
- 變量作用于有兩種:全局變量和局部變量
- js中,函數内部可以直接讀取父級函數的變量
-
舉例說明:
var n = 99;
function f1(){
conosle.log(n)
}
f1() // => 99
- js中,函數外部讀取不到函數外部的變量
-
舉例說明
function f1(){
var n = 99
}
f1()
console.log(n) // n is not defined
如何從外部讀取到内部的變量
- 有時候我們需要得到函數内部的變量,正常情況寫是擷取不到的,但是通過“閉包”,我們可以擷取到函數内部的變量
-
舉例說明
function f1(){
var n = 99
function f2(){
console.log(n)
}
return f2
}
f1()() // 99