بسته های جاوا اسکریپت – جامعه dev

بسته شدن یک مفهوم قدرتمند و اساسی در جاوا اسکریپت است. این به عملکردی اشاره دارد که حتی پس از پایان اجرای عملکرد بیرونی ، از دامنه بیرونی (محصور) آن به متغیرها دسترسی دارد. بسته شدن بخش اصلی برنامه نویسی و کاربردی جاوا اسکریپت است.
چگونه بسته می شود
هنگامی که یک تابع در داخل یک عملکرد دیگر تعریف می شود ، عملکرد داخلی به متغیرها و پارامترهای عملکرد بیرونی دسترسی دارد. حتی پس از اتمام عملکرد بیرونی ، عملکرد داخلی دسترسی به آن متغیرها را حفظ می کند. این رفتار بسته شدن نامیده می شود.
نمونه ای از بسته شدن
function outerFunction() {
let outerVariable = 'I am from the outer scope';
function innerFunction() {
console.log(outerVariable); // innerFunction can access outerVariable
}
return innerFunction;
}
const closureExample = outerFunction();
closureExample(); // Output: "I am from the outer scope"
در این مثال:
innerFunction
بسته شدن است زیرا دسترسی به آن را حفظ می کند outerVariable
حتی بعد از outerFunction
اجرای آن را به پایان رسانده است.
کاربردهای عملی از تعطیلی
- حریم خصوصی داده ها: از بسته شدن می توان برای ایجاد متغیرهای خصوصی استفاده کرد که فقط در دسترس توابع خاص هستند.
function createCounter() {
let count = 0;
return function() {
count++;
return count;
};
}
const counter = createCounter();
console.log(counter()); // Output: 1
console.log(counter()); // Output: 2
console.log(counter()); // Output: 3
- توابع تماس تلفنی: بسته شدن ها به طور گسترده ای در برنامه نویسی ناهمزمان مانند دستگیرندگان رویداد یا تماس های AJAX استفاده می شود.
setTimeout(function() {
console.log('This is a callback using closure');
}, 1000);
- کاری: از بسته شدن در عملکرد عملکرد استفاده می شود ، جایی که یک تابع عملکرد دیگری را با آرگومان های جزئی برمی گرداند.
function multiply(a) {
return function(b) {
return a * b;
};
}
const multiplyByTwo = multiply(2);
console.log(multiplyByTwo(5)); // Output: 10
مزایای بسته شدن
-
کنترل دامنه: بسته شدن به کنترل دامنه متغیرها کمک می کند و از آلاینده آنها در دامنه جهانی جلوگیری می کند.
-
کارایی حافظه: تعطیلی امکان استفاده کارآمد از حافظه را با حفظ دسترسی به متغیرهای خاص بدون ایجاد متغیرهای جهانی فراهم می کند.
احتیاط های بسته شدن
-
نشت حافظه: بسته شدن در صورت عدم استفاده دقیق می تواند باعث نشت حافظه شود زیرا آنها به متغیرهای بیرونی مراجعه می کنند ، که می تواند از جمع آوری زباله جلوگیری کند.
-
عملکرد بالای سر: استفاده بیش از حد از بسته شدن می تواند به دلیل افزایش مصرف حافظه منجر به مشکلات عملکرد شود.
مثال در دنیای واقعی: متغیرهای خصوصی
function createBankAccount(initialBalance) {
let balance = initialBalance;
return {
deposit: function(amount) {
balance += amount;
return `Deposited ${amount}. New balance: ${balance}`;
},
withdraw: function(amount) {
if (amount > balance) {
return 'Insufficient funds';
}
balance -= amount;
return `Withdrew ${amount}. New balance: ${balance}`;
},
getBalance: function() {
return `Current balance: ${balance}`;
}
};
}
const account = createBankAccount(1000);
console.log(account.deposit(500)); // Deposited 500. New balance: 1500
console.log(account.withdraw(200)); // Withdrew 200. New balance: 1300
console.log(account.getBalance()); // Current balance: 1300
در این مثال:
در balance
متغیر خصوصی است و فقط از طریق روشهای ارائه شده توسط بسته شدن قابل دسترسی یا اصلاح است.