https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Closures
function makeAdder(x) {
return function(y) {
return x + y;
};
}
var add5 = makeAdder(5);
console.log(add5(2)); // 7
console.log( add5 )
,會發現 add5 是一個 function
:
function(y) {
return x + y;
};
x 在 var add5 = makeAdder(5) 時被帶入 5 add5 要看成:
{
var x = 5
function(y) {
return x + y;
};
}
// 閉包
another
function makeFunc() {
var name = "Mozilla";
function displayName() {
console.log('displayName: '+name)
}
return displayName;
}
var myFunc = makeFunc();
myFunc();
myFunc() 可看做:
{
var name = "Mozilla";
function displayName() {
console.log('displayName: '+name)
}
}
閉包實用之處,在於能讓你把一些資料,透過 "作用域環境" ({
}
),
與操控這些資料的 "函式" (displayName()
) 相關聯。