概括: 作用域应用的特殊情况
1.函数作为参数被传递
2.函数作为返回值被返回
总结:函数定义的地方和函数执行的地方不一样
// 函数作为返回值
function create() {
let shan = 100
return function () {
console.log(shan)
}
}
shan = 200
const fn = create()
fn() // 100
// 函数作为参数被传递
function print(fn) {
shan = 200
fn()
}
shan 100
function fn () {
console.log(shan)
}
print() // 100
//闭包: 自由变量的查找,不是在调用的地方向上查找,在定义的地方向上作用域查找