function create() {
const a = 100
return function () {
console.log(a)
}
}
const fn = create()
const a = 200
fn()
function print(fn) {
const a = 200
fn()
}
const a = 100
function fn() {
console.log(a)
}
print(fn)
```**答案**
答案:`100`、`100`
* 所有的自由变量的查找,是在函数定义的地方,向上级作用域查找
* 不是在执行的地方!
**闭包的应用:隐藏数据不被外界访问**
```js
function createCache() {
const data = {}
return {
set: function (key, val) {
data[key] = val
},
get: function (key) {
return data[key]
}
}
}
const c = createCache()
c.set('a', 100)
console.log( c.get('a') )