برنامه نویسی

بسته شدن در جاوا اسکریپت – انجمن DEV

Summarize this content to 400 words in Persian Lang
سلام

در این پست بیاموزیم بسته شدن.

بستن در جاوا اسکریپت ضروری است زیرا به یک تابع اجازه می دهد تا به متغیرها از محدوده والد خود دسترسی داشته باشد، حتی پس از بسته شدن آن تابع والد. این برای عملکردهایی که نیاز دارند بسیار مهم است داده ها را در طول زمان به خاطر بسپاریدمانند توابع برگشت به تماس یا حفظ حالت. یکی از نکاتی که در اینجا باید به خاطر داشت این است که متغیرهای استفاده نشده دامنه والد زباله جمع آوری شده اند.

تعریف:بسته شدن ترکیبی از یک تابع همراه (محصور) با ارجاع به وضعیت اطراف آن (محیط واژگانی) است. به عبارت دیگر، یک بسته به یک تابع دسترسی به محدوده بیرونی خود می دهد. در جاوا اسکریپت، هر بار که یک تابع ایجاد می شود، در زمان ایجاد تابع، بسته ها ایجاد می شوند.

اساساً بسته ها به موارد زیر دسترسی دارند:

محدوده خودشون
محدوده توابع بیرونی
دامنه جهانی

امتیاز جایزهدامنه واژگانی: توابع داخلی به متغیرهایی در محدوده بیرونی دسترسی دارند.

بیایید با مثال بفهمیم.

مثال

Q> یک تابع بنویسید createCounter. باید یک عدد صحیح اولیه را بپذیرد init. باید یک شی با سه تابع برگرداند.

این سه عملکرد عبارتند از:

increment() مقدار فعلی را 1 افزایش می دهد و سپس آن را برمی گرداند.()decrement مقدار فعلی را 1 کاهش می دهد و سپس آن را برمی گرداند.reset() مقدار فعلی را روی init تنظیم می کند و سپس آن را برمی گرداند.

کد نظر داده شده را در زیر مشاهده کنید init = 5 نمونه موردی

راه حل

var createCounter = function(init) {
const INITIAL_VALUE = init;
return {
increment: () => ++init,
decrement: () => –init,
reset: () => init=INITIAL_VALUE,
}
};

/**
* const counter = createCounter(5)
* counter.increment(); // 6
* counter.reset(); // 5
* counter.decrement(); // 4
*/

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توضیح:

گرفتن متغیر init در محدوده واژگانی آن.
روش‌هایی را برمی‌گرداند که می‌توانند به init دسترسی داشته باشند و حتی پس از اتمام اجرای createCounter، آن را تغییر دهند.
ایجاد یک حالت خصوصی و ماندگار (init) که فقط از طریق روش های برگشتی قابل دسترسی است.
امکان ایجاد چندین شمارنده مستقل که هر کدام حالت محصور شده خود را دارند.

اگر ابهام یا پیشنهادی دارید در نظرات اضافه کنید.

این سوال از leetcode گرفته شده است. پیوند

در نهایت به خاطر داشته باشید که متغیرهای جهانی اعلام شده برای هر بسته شدن در یک اسکریپت قابل دسترسی خواهند بود.

امیدوارم اکنون درک خوبی از بسته شدن داشته باشید. ممنون که خواندید

سلام

در این پست بیاموزیم بسته شدن.

بستن در جاوا اسکریپت ضروری است زیرا به یک تابع اجازه می دهد تا به متغیرها از محدوده والد خود دسترسی داشته باشد، حتی پس از بسته شدن آن تابع والد. این برای عملکردهایی که نیاز دارند بسیار مهم است داده ها را در طول زمان به خاطر بسپاریدمانند توابع برگشت به تماس یا حفظ حالت. یکی از نکاتی که در اینجا باید به خاطر داشت این است که متغیرهای استفاده نشده دامنه والد زباله جمع آوری شده اند.

تعریف:
بسته شدن ترکیبی از یک تابع همراه (محصور) با ارجاع به وضعیت اطراف آن (محیط واژگانی) است. به عبارت دیگر، یک بسته به یک تابع دسترسی به محدوده بیرونی خود می دهد. در جاوا اسکریپت، هر بار که یک تابع ایجاد می شود، در زمان ایجاد تابع، بسته ها ایجاد می شوند.

اساساً بسته ها به موارد زیر دسترسی دارند:

  • محدوده خودشون
  • محدوده توابع بیرونی
  • دامنه جهانی

امتیاز جایزه
دامنه واژگانی: توابع داخلی به متغیرهایی در محدوده بیرونی دسترسی دارند.

بیایید با مثال بفهمیم.

مثال

Q> یک تابع بنویسید createCounter. باید یک عدد صحیح اولیه را بپذیرد init. باید یک شی با سه تابع برگرداند.

این سه عملکرد عبارتند از:

increment() مقدار فعلی را 1 افزایش می دهد و سپس آن را برمی گرداند.
()decrement مقدار فعلی را 1 کاهش می دهد و سپس آن را برمی گرداند.
reset() مقدار فعلی را روی init تنظیم می کند و سپس آن را برمی گرداند.

کد نظر داده شده را در زیر مشاهده کنید init = 5 نمونه موردی

راه حل

var createCounter = function(init) {
    const INITIAL_VALUE = init;
    return {
        increment: () => ++init,
        decrement: () => --init,
        reset: () => init=INITIAL_VALUE,
    }
};

/**
 * const counter = createCounter(5)
 * counter.increment(); // 6
 * counter.reset(); // 5
 * counter.decrement(); // 4
 */
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

توضیح:

  • گرفتن متغیر init در محدوده واژگانی آن.
  • روش‌هایی را برمی‌گرداند که می‌توانند به init دسترسی داشته باشند و حتی پس از اتمام اجرای createCounter، آن را تغییر دهند.
  • ایجاد یک حالت خصوصی و ماندگار (init) که فقط از طریق روش های برگشتی قابل دسترسی است.
  • امکان ایجاد چندین شمارنده مستقل که هر کدام حالت محصور شده خود را دارند.

اگر ابهام یا پیشنهادی دارید در نظرات اضافه کنید.

این سوال از leetcode گرفته شده است. پیوند

در نهایت به خاطر داشته باشید که متغیرهای جهانی اعلام شده برای هر بسته شدن در یک اسکریپت قابل دسترسی خواهند بود.

امیدوارم اکنون درک خوبی از بسته شدن داشته باشید. ممنون که خواندید

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا