要理解闭包,首先必须理解Javascript特殊的变量作用域。
1.变量的作用域无非就是两种:全局变量和局部变量。
//全局变量
function fun3(){
s="恒" //函数没有用var声明就代表是全局变量,函数外部也可以调用到,如果函数用var声明就代表是局部变量}fun3();
alert(s) //恒
//局部变量
function fun3(){
var s="恒" //函如果函数用var声明就代表是局部变量,外部调用不到
alert(s) //恒
}fun3();
alert(s) //s is not defined
2.如何从外部读取局部变量?将局部变量的值传递给全局变量
function f1(){
n=22;
function f2(){
alert(n);
}
return f2;
}
var result=f1();
result(); // 22