//闭包 是函数和声明该函数的词法环境的组合
//闭包使用场景 1.函数作为返回值 2.函数作为参数传递
function F11(){
var a = 100
return function() {
console.log(a) //自由变量,在声明时候的父作用域寻找
}
}
var f11 = F11() //执行时返回一个函数 function(){ console.log(a) }
var a = 200 //这是全局作用域
f11() //100 执行 function(){ console.log(a) } a自由变量,在声明时的父作用域寻找父作用域寻找即 a=100
function Fx(){
var a = 100
return function() {
console.log(a) //自由变量,在声明时候的父作用域寻找
}
}
var fx = Fx() //执行时返回一个函数 function(){ console.log(a) }
function Fox(fn) {
var a = 200
fn()
}
Fox(fx) // 100