حالت آفلاین — محتوا از حافظهٔ کش نمایش داده می‌شود
آموزش جاوااسکریپت تکمیلی؛ توابع و پردازش داده

آموزش closure در جاوااسکریپت؛ تابع و مقدار به‌یادمانده

closure در جاوااسکریپت و تابع‌های دارای حافظه · 0٪

✍️ closure یعنی یک تابع همراه با دسترسی به متغیرهای محیطی که در آن ساخته شده. حتی اگر اجرای تابع بیرونی تمام شده باشه، تابع داخلی می‌تونه مقدارهای لازم آن محیط را به یاد داشته باشه. این ویژگی برای ساخت رفتارهای تنظیم‌شده، شمارنده خصوصی یا قانون تخفیف کاربرد دارد.

در مثال، createGreeting یک پیشوند می‌گیره و تابع سلام‌کردن می‌سازه. بعد از پایان createGreeting، تابع ساخته‌شده هنوز به prefix دسترسی دارد. هر بار فراخوانی، همان پیشوند با نام تازه ترکیب می‌شه. قرار نیست متن پیشوند در متغیر عمومی ذخیره بشه؛ محیط ساخت تابع آن را نگه داشته.

خطای رایج اینه که فکر کنیم متغیرهای محلی با تمام شدن اجرای تابع بیرونی، برای تابع داخلی هم غیرقابل دسترسی می‌شن. وقتی تابع داخلی هنوز به آن‌ها نیاز دارد، دسترسی حفظ می‌شه. برای آزمون‌های این دوره، تابع سازنده را درون یک تابع ساده صدا می‌زنیم و خروجی نهایی رشته یا آرایه را برمی‌گردونیم؛ خود تابع را به عنوان نتیجه آزمون تحویل نمی‌دیم، چون خروجی باید JSONپذیر باشد.

function createGreeting(prefix) {
  return name => prefix + ' ' + name;
}
function greetingDemo(name) {
  const greet = createGreeting('سلام');
  return greet(name);
}
console.log(greetingDemo('آوا')); // سلام آوا

فعالیت شما

رابطه prefix و تابع greet را در greetingDemo دنبال کن؛ خروجی این wrapper یک رشته است.

مطالعهٔ این گام برای همه آزاد است

برای پاسخ‌دادن، بررسی پاسخ، ثبت پیشرفت و استفاده از دستیار باید شرایط شرکت در فعالیت‌ها را داشته باشید.

برای انجام فعالیت وارد شوید

فعالیت‌های این بخش به اشتراک فعال نیاز دارند. تهیهٔ اشتراک

برای انجام فعالیت‌ها ابتدا این دوره‌های پیش‌نیاز را تکمیل کنید: