ساخت functionهای stateful در جاوا اسکریپت

خیلی از زبان‌های برنامه‌نویسی امکانی رو به ما میدن که طول عمر یه متغیر داخل تابع رو، از هربار صدا زدن اون تابع طولانی‌تر کنیم (برای تابع یک state یا وضعیت تعریف کنیم که با هربار صدا زدنش بتونیم براساس وضعیتش کار متفاوتی انجام بدیم). برای مثال در زبان C با استفاده از متغیرهای static اینکارو انجام میدیم:

https://gist.github.com/mahdavipanah/1057cbf5372947b984b0d61c18d81bef

در جاوا اسکریپت به شکل‌های مختلف اینکار قابل انجامه. برای نمونه با استفاده از Class:

https://gist.github.com/mahdavipanah/1f973498d4981eab71380aa8f8e06830

و یا با استفاده از IIEF که خیلی خودمونی میشه گفت «عبارت تابعیه فوری» یا به بیان ساده‌تر، یه تابع بی‌نامی هست که تعریف می‌کنیم و بلافاصله هم صداش میزنیم:

https://gist.github.com/mahdavipanah/f80a0c5cd6270f8bb6965d8aff6a8354