مرتضی صمدی
مرتضی صمدی
خواندن ۲ دقیقه·۳ سال پیش

آشنایی با تابع callback function ،first-class و ...

تابع first-class یعنی چی؟ چه زبان‌های برنامه‌نویسی تابع first-class دارن؟ callback function یعنی چی؟ Higher order function کدوم‌ها هستن؟ بیایید با این اصطلاح‌ها بیشتر آشنا بشیم. وسطش هم چند تا اصطلاح دیگه داریم که به خاطر ضیغ /ذیق /زیغ /ظیق /... وقت، (اصلا کمبود وقت) بعدا بهش می‌پردازیم ¯\_(ツ)_/¯


زبان‌هایی رو میگیم تابع first-class دارن، که با تابع در اونها مثل هر متغیر دیگه‌ای رفتار میشه. در این زبان‌ها (مثل جاوااسکریپت)، می‌تونیم:

۱. یک تابع رو به عنوان آرگومان بدیم به توابع دیگه،

function sayHello() { return &quotHello, " } function greeting(helloMessage, name) { console.log(helloMessage() + name); } // Pass `sayHello` as an argument to `greeting` function greeting(sayHello, &quotJavaScript!&quot); // Hello, JavaScript!

۲. با return کردن داخل یک تابع، بَرِش گردونیم

function sayHello() { return function() { console.log(&quotHello!&quot); } }

۳. به عنوان یک مقدار (value) بدیمش به یه متغیر.

const foo = function() { console.log(&quotfoobar&quot); } foo(); // Invoke it using the variable // foobar

توجه: حتی اگه تابعی که assign می‌کنید به یک متغیر، خودش نام داشته باشه، باز هم می‌تونید از نام اون متغیر برای صدا زدن (invoke کردن) تابع استفاده کنید.

البته نامگذاری برای فانکشن در اینجا کمک میکنه موقع دیباگ کردن، راحت تر خطا رو پیدا کنید، اما در روند invoke کردن توسط نام متغیری که این تابع رو در خودش جای داده، هیچ تاثیری نداره.


بازم توجه: تابعی که به عنوان یک آرگومان به تابع دیگه میدیمش، callback function نام داره.

از callback function وقتی استفاده می‌کنیم که قرار باشه یه سری روال روتین و یا action انجام بشه، ولی این کارها زمانی باید انجام بشن که تابع بیرونی صداشون بزنه (invoke کنه)

توجه‌تان مستدام: البته توی واقعیت، از این callback ها بیشتر وقتی استفاده میشه که قرار باشه اجرای کد، بعد از تموم شدن یک فعالیت asynchronous، ادامه پیدا کنه، که به این نوع callback ها میگیم asynchronous callbacks. یه ذره سخت شد؟ مثال پایین رو بخونیم که دیگه خیلی سخت شه :))

* یک callback function داریم که داخل یک ()then. اجرا میشه

* خود این ()then. بعد از یک promise قرار گرفته

* بعد از اینکه این promise به جواب رسید یا ریجکت شد، این callback function اجرا میشه

از این ساختار در web API های مدرن مثل ()fetch استفاده شده.


توجه (قول میدم آخرین توجه باشه): مورد دوم یعنی تابعی که یک تابع دیگه رو برمی‌گردونه (return می‌کنه) یک Higher-Order Function نام داره.

نوبت شماست. شما با چه اصطلاح هایی بیشتر روبرو میشین؟ کدوم اصطلاح‌ها رو بهش برخورد کردین و حس کردین سخته ولی بعدا که پیش رفتین دیدین نه اونقدرها هم سخت نبود بلکه خیلی خیلی سخت بود؟!


اگه خوشتون اومد ❤️ یادتون نره.

سعی کردم این نوشته رو یه ذره از حالت جدی بودن خارج کنم و دوست دارم نظرتون رو در مورد این طرز نوشته‌ها بدونم.

راستی برای آموزش برنامه نویسی جاوااسکریپت/فرانت اند و تولید محتوا در زمینه برنامه نویسی، تکنولوژی، گجت‌های روز و اسمارت‌فون‌ها می‌تونین روی من حساب کنین ;)


منابع:

https://developer.mozilla.org/en-US/docs/Glossary/First-class_Function

https://developer.mozilla.org/en-US/docs/Glossary/Callback_function

functionjavascriptبرنامه نویسیاصطلاحات برنامه نویسیآموزش برنامه نویسی
فهمیدم نفهمیدم!
شاید از این پست‌ها خوشتان بیاید