当function里嵌套function时,内部的function可以访问外部function里的变量。
先来说些,介绍些闭包的用处:就是为了避免内存泄露而存在的,闭包重点(或者意义)就是理解js的作用域;
1.缓存
2.面向对象中的对象
3.实现封装,防止变量跑到外层作用域中,发生命名冲突
4.匿名自执行函数,匿名自执行函数可以减小内存消耗.
但我的观点依然是:
不要刻意避免使用闭包,但也不应该非要闭包。按代码设计来,按编程节奏来
function foo(x) {
var tmp = 3;
function bar(y) {
alert(x + y + (++tmp));
}
bar(10);
}
foo(2);
推荐:此文非常之好:https://zhuanlan.zhihu.com/p/22486908?refer=study-fe
var local='变量'
function foo(){
console.log(local);
}
假设上面三行代码在一个立即执行函数中(为简明起见,我就不写立即执行函数了,影响读者理解)
上面三行代码在一个立即执行函数中。
三行代码中,有一个局部变量 local,有一个函数 foo,foo 里面可以访问到 local 变量。
好了这就是一个闭包:
「函数」和「函数内部能访问到的变量」(也叫环境)的总和,就是一个闭包。
就这么简单。
如果还不够了解,可以去看推荐网址。