闭包概念
- 闭包就是可以读取其他函数内部变量的函数
变量的作用域
- 要理解闭包,首先要知道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