理解js特殊的变量作用域
- 变量的作用域分为全局变量和局部变量
- 例一
function f1(){
var a = 30;
}
alert(a);// 报错:a is not defined
- 这里的a是局部变量,函数内部可以访问外部变量,但是外部不可以访问内部变量。因此会报错
- 值得注意的是:函数内部声明变量的时候,一定要使用var命令。如果不用的话,实际上是声明了一个全局变量。
关于闭包
- 闭包的用途分别有
- 可以读取函数内部的变量
- 让变量的值始终保存在内存中
- 闭包的概念:闭包是指有权访问另一个函数作用域的变量的函数(也可以理解为定义在一个函数内部的函数)
举例:
function f1(){
n = 999;
function f2(){
alert(n);
}
return f2();
}
var result = f1();
result();//999
上面代码中f2函数就是一个闭包,return f2() 后就可以在f1()函数中获得f2()函数中的局部变量,因此弹出999
前段时间和朋友讨论了一下闭包,发现自己理解错了。应该是一整个函数称为闭包。