JavaScript閉包(Closure)是一種在編程中非常有用的技術(shù),它允許一個(gè)函數(shù)訪問(wèn)并操作其外部作用域中的變量。閉包可以用于以下場(chǎng)景:
function createCounter() {
let count = 0;
return {
increment: function () {
count++;
},
getCount: function () {
return count;
},
};
}
const counter = createCounter();
counter.increment();
console.log(counter.getCount()); // 輸出 1,但不能直接訪問(wèn) count 變量
(function () {
var blockScopedVariable = "I am block scoped";
// 塊級(jí)作用域內(nèi)還可以添加其他邏輯
})();
console.log(blockScopedVariable); // 引用錯(cuò)誤:blockScopedVariable is not defined
function createMultiplier(multiplier) {
return function (input) {
return input * multiplier;
};
}
const double = createMultiplier(2);
const triple = createMultiplier(3);
console.log(double(5)); // 輸出 10
console.log(triple(5)); // 輸出 15
function createLogger(prefix) {
let count = 0;
return function (message) {
count++;
console.log(`[${prefix} #${count}] ${message}`);
};
}
const infoLogger = createLogger("Info");
infoLogger("Hello, World!"); // 輸出: [Info #1] Hello, World!
infoLogger("Another message"); // 輸出: [Info #2] Another message
這些只是閉包在JavaScript中的一些常見(jiàn)用途。閉包是一個(gè)強(qiáng)大的特性,可以幫助您編寫(xiě)更加模塊化、可維護(hù)和高效的代碼。