作用域应用的特殊情况,有两种表现:
- 函数作为参数被传递
- 函数作为返回值被返回
// 函数作为返回值function create() {let a = 100;return function () {console.log(a)}}let fn = create();let a = 200;fu() // 100
// 函数作为参数被传递function print(fn) {let a = 200fn()}let a = 100function fn() {console.log(a)}print(fn) // 100
闭包:自由变量的查找,是在函数定义的地方,向上级作用域查找
不是在执行的地方!!!
