1. 简单写法
function outer() {
let str = '闭包'
function inner() {
console.log(str)
}
inner()
}
outer()
解释: 内层函数inner调用了外层函数outer中的变量str
2. 在函数外部访问函数内部的变量str
function outer() {
let str = '闭包'
function inner() {
console.log(str)
}
return inner
}
var fn = outer()
fn()
解释: 外部函数fn使用了outer函数内部的变量str
3. 内部函数被return
function outer() {
let str = '闭包'
return function inner() {
console.log(str)
}
}
var fn = outer()
fn()
解释: 内部函数inner被return,其实也可以将inner省去,返回一个匿名函数,作用是一样的。
4. 其他写法
function outer() {
let str = '闭包'
return function() {
return str
}
}
var fn = outer()
console.log(fn())