闭包,作用域和作用域链
程序员文章站
2024-02-17 16:31:52
...
什么是作用域?
作用域相当于一个空间,最大的作用域是window,而window下的变量是全局变量,而相对于的局部变量是指:在window下开辟一个空间,空间里的变量。
闭包是什么?
闭包就是有权访问另一个作用域中的变量的函数。
例如
function f() {
var n=0;
function f1() {
n++;
console.log(n);
}
return f1;
}
var c=f();
c();
c()
图形理解
代码的理解:
因为,我们要取f1里的变量,而全局变量不能访问局部变量,而局部变量能访问到全局变量。而我们要解决全局变量不能访问局部变量。我们就把return f1 到全局,这样就能访问了。如图解,首先f这个空间,而f1是f中的空间,我们要把f1里的变量导入出来,这样全局里面就能访问局部的了。但闭包运用不当就会导致内存泄漏。
而解决内存泄漏的常用方法 c=null;
作用域链:一个作用域访问另一个作用域形成的链式结构,就是作用域链
下一篇: JavaScript作用域及作用域链