JavaScript閉包是一種強大的特性,它允許一個函數訪問并操作其外部作用域中的變量。然而,閉包可能會導致一些意外的行為,特別是在處理變化時。以下是一些建議,可以幫助您更好地應對閉包中的變化:
const myModule = (function() {
const privateVar = "I'm private";
function privateFunction() {
console.log(privateVar);
}
return {
publicFunction: function() {
privateFunction();
}
};
})();
myModule.publicFunction(); // 輸出 "I'm private"
for (let i = 0; i < 5; i++) {
setTimeout(function() {
console.log(i); // 輸出 0 到 4
}, 1000);
}
function createCounter() {
let count = 0;
return function() {
count++;
console.log(count);
};
}
const counter = createCounter();
counter(); // 輸出 1
counter(); // 輸出 2
const privateData = new WeakMap();
function setPrivateData(key, value) {
privateData.set(key, value);
}
function getPrivateData(key) {
return privateData.get(key);
}
const obj = {};
setPrivateData(obj, "I'm private");
console.log(getPrivateData(obj)); // 輸出 "I'm private"
通過遵循這些建議,您可以更好地應對JavaScript閉包中的變化,并確保代碼的可維護性和可讀性。