javascript之闭包
程序员文章站
2022-04-19 11:01:58
...
1.概念:其局部变量在函数调用结束之后继续存在。
2.前提:嵌套函数
3.分析理解嵌套函数:
但是。。。。
函数f在调用的时候生成的Call-f对象的属性g所引用的Function被fn1引用,只要fn1存在,被fn1引用的Function就存在,Call-f对象也就存在。这就导致了即便是离开了f,还是可以引用f中的变量n。<--- 此为闭包
2.前提:嵌套函数
function f(){ function fn1(){}; }
3.分析理解嵌套函数:
function f(){ function g(){ print 'g is a function' }; g();//生成Call-g对象 } f();//javascript中对函数的调用会隐式生成Call对象,此处生成Call-f对象,Call-f的属性包括f和g,此对象在函数调用结束后被销毁。Call-f对象被销毁的时候,相关的属性也被销毁。 ==>g is a function
但是。。。。
function f(){ var n = 123; function g(){ console.log('n=' + n); }; return g; } var fn1 = f(); fn1();
函数f在调用的时候生成的Call-f对象的属性g所引用的Function被fn1引用,只要fn1存在,被fn1引用的Function就存在,Call-f对象也就存在。这就导致了即便是离开了f,还是可以引用f中的变量n。<--- 此为闭包