闭包:函数和其周围的的状态(语法环境)的引用捆绑在一起形成闭包
可以在另一个作用域中调用一个函数的内部函数并访问到该函数的作用域中的成员
闭包的本质:函数在执行的时候会被放到一个执行栈上,当函数执行完毕之后会从执行栈上移除,但是堆上面的作用域成员因为被外部引用不能释放,因此内部函数依然可以访问外部函数的成员。
延长了函数的内部变量的作用范围
闭包案例:
let makePower= function(pow) {
return function(number) {
return Math.pow(number, pow)
}
}
let makePower2 = makePower(2)
makePower2(3)
function getSalary(base) {
return function(performance) {
return base + performance
}
}
let ASalary = getSalary(10000)
let BSalary = getSalary(5000)
console.log(ASalary(1000))
console.log(BSalary(500))
callStack 函数调用栈 Closure 闭包
网友评论