闭包的基本用处
1.构造函数访问私有变量
2.回调函数,比如ajax和动画计时
闭包的概念理解:
1.闭包允许函数访问并操作函数外部的变量
2.只要变量或函数存在于声明变量数的作用域内,闭包即可访问到这些变量和函数,即使函数申明的作用域消失,该函数仍然可以调用
当在外部函数中声明了内部函数时,不仅定义了函数声明还创建了一个闭包
正如保护气泡一样,只要内部函数一直存在,内部函数的闭包就一直保存着作用域的变量
贴上自己的函数加深理解(累加器)
{
function sum(){
var result = 0;
function method_add(){
for(let index in arguments)
result += arguments[index]
console.log(result)
}
return method_add
}
var example=sum()
example(1,2,4)
}
{
function sum(){
var result = 0;
return function method_add(){
for(let index in arguments)
result +=arguments[index]
console.log(result)
}
}
}
var example = sum();
example(1,2,4)
上下两个代码块完全相同,只是写法稍微差了一点点,
arguments隐式传递参数到内部函数中,完成累加
第一个example保存了内部函数methods_add的引用
第二个example保存了返回的函数methods_add