從外部訪問函數局部變量
變量有局部變量和全局變量。對於函數的局部變量,在函數內部可以訪問,在函數外部無法訪問。對於全局變量,在函數內部和外部都可以訪問。
閉包是什麼?
Javascript允許在函數中定義內部函數,將內部函數返回,這時候會產生閉包。
閉包中含有一種特殊的局部變量,在函數結束返回後仍然存在。
閉包中的局部變量是引用而不是拷貝。
返回內部函數
function makeFunc() {
var name = "Hello";
function displayName() { //閉包
alert(name);
}
return displayName;
}
var myFunc = makeFunc();
myFunc();
內部匿名函數
function f1(){
var n=0;
nAdd = function(){ //閉包
n+=1;
alert(n);
}
return;
}
var result=f1();
nAdd();
nAdd();
組合例子
function f1(){
var n=0;
nAdd = function(){ //閉包
n+=1;
alert(n);
}
var g = function(){ //內部變量,無法在外部調用
alert("g");
n+=1;
alert(n);
}
function f2(){ //閉包
alert(n);
}
//g();
return f2;
}
var result=f1();
g();
result();
nAdd();