ps:学习了一段时间的js之后才知道什么才是闭包,感觉自己好菜呀!
含义:当函数可以记住并访问所在的词法作用域时,就产生了闭包,即使函数是在当前词法作用
域之外执行
个人理解:闭包是一种这样一种情况——一个函数a在函数b中进行声明,当函数b执行结束之后函数a仍然可以访问函数b作用域的所有变量,恩~对于一个刚学完java的我来说这就像是有人告诉我说其实一个对象里面的函数在对象销毁后仍然可以使用一样毁三观,但现实就是这么神奇,只要被包含的函数a仍然被使用,函数b的作用域就没有被销毁。下面是代码
function foo() {
var a = 2;
function bar() {
console.log( a ); }
bar();
}
foo();// 2
function foo() {
var a = 2;
function bar() {
console.log( a );
}
return bar;
}
var baz = foo();
baz(); // 2