آموزش جاوا اسکریپت

آموزش جاوااسکریپت – جلسه سوم: توابع در جاوااسکریپت (JS Functions)

فهرست مطالب:

کاربرد توابع در جاوااسکریپت

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

تابع چیست و به چه دردی میخوره؟

تابع (به انگلیسی: function) یک تکه برنامه کوچیکه.

فایده اش اینه که یکبار نوشته میشه، ولی بارها ازش استفاده میشه.

مثلا فرض کنین شما توی یه برنامه بارها میخواید به کاربر پیغام نشون بدین.

بجای اینکه هر بار (مثلا ۱۰۰ بار) برای نمایش پیام به کاربر،‌کد بنویسید،‌با نوشتن یک تابع میتونید یک بار کد بنویسید.

و بعداً میتونید ‌هر جا که نیاز داشتید، با صدا زدن اسم اون تابع، ازش استفاده کنید. و پیام خودتون رو به کاربر نمایش بدید.

استفاده از توابع در جاوااسکریپت باعث میشه که:

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

ساختار توابع در جاوااسکریپت JS Functions Structure

توابع در جاوااسکریپت با کلمه کلیدی function تعریف می شن.

علاوه بر آن، هر تابع شامل یک نام دلخواه، یک جفت پرانتز (که آرگومانهای ورودی داخل آن قرار خواهند گرفت) و بک جفت آکولاد می باشد.

بلوک اصلی و پیاده سازی تابع، بین این دو آکولاد قرار می گیرد. این تابع کوچولوی جاوااسکریپت رو ببینید:

function name(parameter1, parameter2, parameter3) {
  // کدهای اصلی پیاده سازی یلوک تابع در اینجا نوشته میشود
}

همانطور که ما در جاوااسکریپت، متغیر های با نوع داده اختصاصی نداریم، نوع بازگشتی توابع رو هم مشخص نمی کنیم.

(مثلا توابعی از نوع void و String و Int و غیره نداریم) و همه توابع در جاوااسکریپت با همان کلمه کلیدی function و یک نام تعریف می شوند.

قواعد نامگذاری توابع در جاوااسکریپت

نامگذاری توابع جاوااسکریپت از قواعد نامگذاری متغیرها در جاوااسکریپت تبعیت میکنه.

قوانین نامگذاری توابع جاوااسکریپت اینها هستن:

  • توابع باید نام یکتا داشته باشند. یعنی نمی شود در یک فضای نام، دو تابع همنام داشت.
  • نام توابع میتواند شامل حروف انگلیسی، اعداد، کاراکتر آندرلاین( ـ ) و کاراکتر دلار ( $ ) باشد.
  • نام توابع نمیتواند با عدد شروع شود. ولی شروع آنها با کاراکتر آندرلاین( ـ ) و کاراکتر دلار ( $ ) منعی ندارد.
  • نباید از کلمات رزرو شده بعنوان نام تابع استفاده کرد. (کلمات رزورشده کلماتی هستند که در جاوااسکریپت معنای خاصی دارند. مثل var و int و new و غیره. جدول کلمات رزرو شده جاوااسکریپت را در اینجا می توانید ببینید: جدول کلمات رزور شده جاوااسکریپت

فراخوانی توابع در جاوااسکریپت JS Function Invoke

خب حالا یه تابع رو که نوشتیم، چجوری باید اجراش کنیم؟‌ به فرمان اجرا کردن توابع در جاوااسکریپت، invoke گفته می شود. (بعضی جاها هم به این کار میگن call که در واقع همون invoke هستش)

فراخوانی توابع جاوااسکریپت به سه صورت انجام میشه:

  • فراخوانی از طریق رویداد های صفحه (مثل کلیک موس)
  • فراخوانی از داخل کد جااواسکریپت
  • فراخوانی توسط خودش (توابع خودنگاه) این را چند پاراگراف پایین تر در بخش مخصوص به خودش توضیح دادم.

فراخوانی توابع از طریق رویداد های صفحه (مثل کلیک موس)

در این حالت، تابع ما از داخل صفحه – یعنی از داخل کدهای html – فراخوانی میشه.

مثلا فرض کنید که یک دکمه در صفحه داریم. و وقتی روی اون دکمه کلیک می کنیم، تابع ما فراخوانی و اجرا میشه.

<!DOCTYPE html>
<html>
<body>

<h2>آموزش فارسی جاوااسکریپت</h2>


<button type="button" onclick="myFunction()">کلیک کن</button>

<script>
function myFunction() {
  alert("شما یک تابع را فراخوانی کردین");
}
</script>

</body>
</html> 

در کد بالا، در خطوط ۱۱ تا ۱۳ ما یک تابع تعریف کردیم. این تابع یک پیام به صورت آلرت چاپ می کنه.

در خط ۸، ما یک دکمه گذاشتیم و توش از اتریبیوت onclick استفاده کردیم. اتریبیوت onclick یک رویداد (به انگلیسی: Event) هستش.هر وقت یک رویداد (برای شیئی که رویداد داخلش تعریف شده) اتفاق بیفته، کاری که براش تعریف کردن انجام میشه.

کاری که به یک رویداد محول میشه رو جلوش داخل دوتا کوتیشن می نویسن.

در مثال بالا، به رویداد onclick نام تابع myFunction به همراه پرانتزهایش نسبت داده شده. یعنی هر وقت این اتفاق افتاد، باید اون تابع اجرا بشه.

پس با کلیک بر روی این دکمه، تابع myFunction اجرا میشه و آلرت برای کاربر به نمایش در میاد.

شما میتونید یک فایل html درست کنید و مثال های این بخش از آموزش جاوااسکریپت رو داخلش کپی کنید و بوسیله مرورگر اجرا کنید.

فراخوانی توابع از داخل کد جااواسکریپت

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

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

function myAlert(){
	alert("salam bache ha!");
}
myAlert(); // تابع اینجا فراخوانی شده

مقادیر بازگشتی توابع در جاوااسکریپت JS Functions Return

چند سطر بالاتر بهتون گفتم که توابع جاوااسکریپت بر اساس نوع بازگشتی تعریف نمیشن. یعنی ما متغیر void و String و Int و غیره نداریم.

بنابر این وجود return در هیچ تابعی در جاوااسکریپت اجباری نیست.

با این وجود، در کل از نظر منطقی دو نوع تابع داریم. یک نوع تابع که فقط کاری انجام میده و چیزی بر نمی گردونه. و یک نوع تابع که بعد از انجام کار، یه مقداری هم بر می گردونه.

برای اینکه چیزی توسط تابع بازگشت داده بشه از کلمه کلیدی return استفاده می کنیم.

function myFunction() {

return “salaam”;

}

کاربرد توابع بازگشتی در جاوااسکریپت

اصلاً مقدار بازگشتی یه تابع به چه دردی میخوره؟ یعنی این مقدار رو بازگشت میده به چی؟

خب ما دو مدل میتونیم از این مقدار بازگشتی استفاده کنیم:

  • استفاده از مقادیر بازگشتی توابع به صورت مستقیم
  • استفاده از مقادیر بازگشتی توابع بعوان مقدار یک متغیر (ریختن تابع در متغیر)

استفاده از مقادیر بازگشتی توابع به صورت مستقیم

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

<!DOCTYPE html>
<html>
<head>
<title>Java Farsi</title>
</head>
<body>

<h1>Javascript Functions</h1>

<script>
    function mostaghim(){
        return "salam bache ha";
    }

    console.log(mostaghim());
    
</script>
</body>
</html>

در کد بالا،‌ما یک تابع به اسم mostaghim ساختیم و بهش گفتیم مقدار salam bache ha رو برگردونه.

بعد اون تایع رو به صورت مستقیم بعنوان پارامتر ورودی console.log فراخاونی کردیم.

اتفاقی که میوفته اینه که تابع صدا زده میشه، مقدار salam bache ha رو بر می گردونه. و چون خودش توی پرانتز جلوی console.log هست، مقدار بازگشتی اون، توی پرانتزه ریخته میشه.

انگار نوشتیم :

console.log("salam bache ha");

پس ما اینجا از یک تابع جاوااسکریپت به صورتی استفاده کردیم که انگار خود تابع معادل مقدار بازگشتی اش هست.

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

استفاده از مقادیر بازگشتی توابع بعنوان مقادیر متغیر ها

ما میتونیم خیلی ساده، مقدار بازگشتی یک تابع رو داخل متغیر بریزیم. خیلی ساده است. ببینید.

<!DOCTYPE html>
<html>
<head>
<title>Java Farsi</title>
</head>
<body>

<h1>Javascript Functions</h1>

<script>

function myFunc(){
    return "salam";
}

var myString = myFunc();

    console.log(myString);
    
</script>
</body>
</html>

متغیر های محلی و میدان دید در توابع جاوااسکریپت JS Function Local Variables

به متغیری که داخل بدنه یک تابع تعریف شده، میگیم متغیر محلی (به انگلیسی: Local Variable).

متغیر محلی یک تابع، ‌در بیرون از اون تابع اعتباری نداره. و انگار که اصلا تعریف نشده باشه.

function myFunc(){

    var x = 2;
}

    console.log(x);

-> Uncaught ReferenceError: x is not defined

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

اصطلاحاً اینجا میگن میدان دید (به انگلیسی: scope) متغیر x محدود به تابع هست.

var x = 10;
// ایکس رو بیرون تابع مقداردهی می کنیم ومقدارش 10 میشه
function myFunc(){
  var x = 2;
  // ایکس رو داخل تابع مقداردهی می کنیم و مقدارش 2 میشه
}
// هنوز بیرون تابع، مقدار ایکس 10 هستش

مثال بالا هم به خوبی میدان دید متغیر های محلی در توابع رو بیان می کنه. همونطور که می بینید، تابع محلی x هیچ تاثیری در مقدار تابع سراسری x که در برنامه اصلی تعریف شده نداره.

رفع ابهام:

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

تابع به تمام متغیرهای سراسری که داخل برنامه تعریف شدن، دسترسی داره و میتونه ازشون استفاده کنه. البته به شرطی که خودش متغیر محلی با همون اسم نداشته باشه!

var x = 2;

function myFunc(){

    return x + 4;
}

    console.log(myFunc());
    
-> 6

در مثال بالا می بینید که تابع تونسته از متغیر سراسری x استفاده کنه و علمیات ریاضی رو روش انجام بده.

آرگومان ها یا پارامتر های ورودی در توابع جاوااسکریپت

فرض کنید ما میخوایم یه تابع بنویسیم که دوتا عدد رو بگیره و اونها رو باهم جمع کنه. یعنی بارها بتونیم اون تابع رو صدا بزنیم و دوتا عدد جدید بهش بدیم و این تابع، جمع اونها رو به ما برگردونه.

برای این کار از پارامترهای ورودی تابع استفاده می کنیم.

ما میتونیم هر تعدادی که دلمون بخواد و لازم باشه برای یه تابع پارامتر بنویسیم. و کافیه اونها رو با کاما یا همون ویرگول از همدیگه جدا کنیم.

هر پارامتر، نقش یک متغیر محلی رو بازی میکنه و هربار موقع فراخوان (invoke) کردن تابع، مقدار دهی میشه.

function sumOf(a,b,c){

    return a + b + c;
}

var result = sumOf( 2 , 3 , 4);

    console.log(result);

-> 9

در مثال بالا می بینید که تابع sumOf سه تا پارامتر ورودی با نامهای a,b,c داره. موقع فراخوانی، سه آرگومان ۲ و ۳ و ۴ به این تابع پاس داده میشه. تابع آرگومانهایی که بهش پاس داده شده رو بجای پارامترهای ورودی خودش قرار میده،‌محاسبه رو انجام میده و نتیجه رو بر می گردونه.

یعنی به ترتیب:‌مقدار ۲ رو میریزه توی a ، مقدار ۳ رو میریزه توی b ، و مقدار ۴ رو میریزه توی c.

تفاوت پارامتر و آرگومان در جاوااسکریپت

ساده بگم :

به اون متغیرهایی که موقع تعریف تابع داخل پرانتز قرار می گیره، میگن پارامترهای تابع.

به مقادیری که موقع فراخوانی تابع به تابع پاس داده میشه،‌میگن آرگومان.

function sumOf(a,b,c){  // اینها پارامتر هستن

    return a + b + c;
}

sumOf( 2 , 3 , 4); // ولی اینها آرگومان هستن

    console.log(result);

مقادیر پیشفرض برای پارامترهای تابع

پارامتر پیشفرض تابع چیست؟

در خیلی از زبانهای برنامه نویسی، وقتی یه تابعی پارامتر ورودی داره،‌ موقع صدا زدن تابع، حتما باید مقداردهی انجام بشه.

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

ولی در زبانهای برنامه نویسی جدید، یک چیزی در نظر گرفتن به نام مقادیر پیشفرض برای پارامترهای توابع.

یعنی موقع فراخوانی، اگر آرگومانها رو وارد کنیم، ازشون استفاده میکنه ولی اگر وارد نکنیم، ارور نمیده و مثل بچه های خوب، از اون مقادیر پیشفرض استفاده میکنه.

حالا ما توی جاوااسکریپت ES6 هم به این درجه از عرفان رسیدیم که توابع با پارامترهای پیشفرض داشته باشیم.

اما خب اگر به هر دلیلی (مثلا قدیمی بودن مرورگر) نخوایم از ES6 استفاده کنیم باید چکار کنیم؟

مقادیر پیشفرض پارامتر های تابع در جاوااسکریپت ES5 و ماقبل آن

خبر خوب!‌ درسته که جاوااسکریپت ES5 به قبل، از مقادیر پیشفرض پارامترهای توابع پشتیبانی نمی کنه. ولی اگر یک تابع پارامتردار رو بدون آرگومان فراخوانی کنیم، ارور هم نمیده بهمون. دستش درد نکنه.

        function myFunc(par){

            return(par);

        }
        console.log(myFunc());
-> undefined

توی مثال بالا می بینید که ما یه فانکشن تعریف کردیم که یه پارامتر به نام دلخواه par داره. ولی موقعی که فراخوانیش کردیم، هیچ آرگومانی بهش پاس ندادیم. چاوا اسکریپت در این مواقع،‌ ارور نمیده. ولی چون par مقداردهی نشده، مقدارش undefined هست.

توی لاگ هم می بینید که، مقدار undefined به ما برگردوند.

ما هم از این undefined نهایت سو استفاده رو می کنیم و برای برنامه خودمون مقدار پارامتر پیشفرض درست می کنیم!

        function myFunc(par){

            if(par == undefined){
                par = "salam!";
            }

            return(par);

        }
        console.log(myFunc());
-> salam

در کد بالا، ما در نهایت رذالت و با یک ترفند کثیف، گفتیم اگر مقدار پارامتر ورودی برابر undefined بود، خودت par رپو مقداردهی کن. در اینجا مقدار استرینگ salam رو ریختیم داخل par.

مقادیر پیشفرض پارامتر های تابع در جاوااسکریپت ES۶ به بعد

حالا ما توی جاوااسکریپت ES6 این امکان رو داریم که به صورت صریح برای پارامترهای توابع مقادیر پیشفرض بنویسیم. نوشتنش هم خیلی راحته. همونجا موقع نوشتن اسم پارامتر، مقداردهیش می کنیم. اینجوری:

        function myFunc(par = "salam"){

            return(par);

        }
        console.log(myFunc());

-> salam

توی کد بالا ما همونجا موقع تعریف فانکشن، برای پارامتر par مقدار پیشفرض salam رو تعریف کردیم. حالا اگر موقع فراخوانی تابع، آرگومان معادل par رو وارد نکنیم، مقدار پیشفرض درنظر گرفته میشه.

اگه موقع فراخوانی تابعی که پارامتر پیشفرض داره، بهش آرگومان هم بدیم چی میشه؟

هیچی. جاوااسکریپت مقدار پیشفرض رو نادیده می گیره و از آرگومان ورودی شما استفاده می کنه.

        function myFunc(par = "salam"){

            return(par);

        }
        console.log(myFunc("khodafez"));

-> khodafez

در کد بالا می بینید که تابع ما دارای مقدار پیشفرض salam برای پارامتر par هستش. ولی ما موقع فراخوانی تابع، مقدار khodafez رو به این پارامتر پاس دادیم. همونطور که در خروجی لاگ می بینید، جاوااسکریپت مقدار پیشفرض رو نادیده می گیره و مقداری که در آرگومان وارد شده رو به par تخصیص میده.

این قسمت رو قبلاً توی آموزش ES6 از سیر تا پیاز گفته بودم. خوندنش خالی از لطف نیست.

توابع خودنگاه در جاوااسکریپت JS Self-Invoking Functions

خودنگاه رو دقیقا از کجایت آورده ای؟‌ به خدا اسمی برای تابع self-invoking در فارسی پیدا نکردم!

معنی تابع self-invoking میشه توابعی که خودشون خودشون رو فراخوانی می کنن.

من برای ادای احترام به استاد، اسم این رو اختصاراً گداشتم خودنگاه! حالا شما اینو فقط بعنوان شوخی درنظر بگیرید و از همون عنوان self-invoking functions استفاده کنین.

ساختار توابع self-invoking در جاوااسکریپت

یادتون باشه. برای تعریف یک تابع self-invoking باید از سه جفت پرانتز استفاده کنید.

  • پرانتز اول که کل تابع داخل اون قرار می گیره.
  • پرانتز دوم که جلوی کلمه کلیدی function میاد.
  • پرانتز سوم که بعد از پرانتز اول میاد و برای فراخوانی تابع ازش استفاده میشه.
(function(){})();

نمونه پیاده سازی شده اش اینجوری میشه:

        (function(){
            alert();
        })();

توابع بی نام JS Anonymous Functions

توابع بی نام، توابعی هستن که بدون اسم تعریفشون می کنیم و میریزیموشون داخل یه متغیر. و برای فراخوانی این توابع، از اسم اون متغیر به علاوه یک جفت پرانتز استفاده می کنیم. این مثال رو ببینید:

        var a = function(){
            alert("salam");
        }
        a();

تفاوت توابع بی نام و توابع معمولی در جاوااسکریپت

تفاوت اولشون اینه که توابع بدون نام تا زمانی که فراخوانی نشن، اصلا وجود خارجی ندارن.

تفاوت دوم هم اینه که ما اینو ریختیم توی یه متغیر. حالا اگه متغیره رو مجدداً مقداردهی کنیم، کل تابع ما از بین میره 😀

توابع تودرتو در جاوااسکریپت

این نکته رو هم میخواستم بهتون بگم که نوشتن توابع تودرتو در جاوااسکریپت امکانپذیره و نکته خاصی نداره.

بغیر از اینکه شما تا وقتی تابع بیرونی رو فراخوان نکنید، نمیتونید تابع داخلی رو فراخوان کنید.

چون تابع داخلی تا قبل از فراخوان تابع بیرونی،‌اصلا وجود خارجی نداره.

Callback توابع در جاوااسکریپت

اول ببینیم callback به چه دردی می خوره

یه چیز جالب بهتون بگم. روش انجام دستورات در جاوااسکریپت به صورت async هست.

یعنی چی؟ یعنی جاوااسکریپت برای شروع اجرای یک دستور، منتظر تموم شدن دستور قبلی نمی مونه.

کد زیر رو درنظر بگیرید:‌

function01();
function02();

در حالت عادی، اول تابع اول اجرا میشه، بعد تابع دوم اجرا میشه. اما در جاوااسکریپت، لزوماً اینجوری نیست.

توی جاوااسکریپت، تابع اول شروع به کار می کنه، بعدش تابع دوم شروع به کار می کنه. و جاوااسکریپت برای شروع تابع دوم، منتظر تموم شدن کار تابع اول نمی مونه.

خب اینکه چیز بدی نیست. خیلی هم عالیه. پس مشکل کجاست؟

مشکل اینجاست که ما بعضی وقتها نیاز داریم یک تایع، بعد از تموم شدن کار یک تابع دیگه، اجرا بشه.

ولی در حالت عادی ما نمیتونیم این موضوع رو کنترل کنیم. و با توجه به سرعت کار تابع اول، ممکنه تابع دوم قبل از اتمام کار تابع اول اجرا بشه.

ما برای اینکه مطمئن بشیم اجرای یک تابع، بعد از اجرای یک تابع دیگه اتفاق میفته، از روش callback استفاده می کنیم.

روش اجرای callback توابع در جاوااسکریپت

تابعی که میخوایم به صورت callback اجرا بشه رو، موقع فراخوان تابع اول، به صورت یک آرگومان داخل پرانتز تعریف می کنیم.

        function func01(asghar){ // نام تابع کال بک رو اصغر گذاشتیم 
            console.log("func01 executed");
            asghar();
        }

        func01 (   // به این پرانتز دقت کنید
            function(){ //موقع تعریف تابع اسمشو نمی نویسیم
                console.log("second function");
            }); // به پرانتز بسته شده اینجا هم دقت کنید

-> func01 executed
-> second function

در واقع من کد رو به صورت باز شده براتون نوشتم که خوانایی بهتری داشته باشه. دقت کنید که تابع دوم،‌داخل آکولاد نوشته نشده!

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

علاوه بر اون،‌ دقت کنید که تابع callback ما به صورت بدون نام تعریف میشه.

فقط وقتی بعنوان پارامتر داریم یک تابع بع تابع اول پاس میدیم،‌ (موقع تعریف تابع اول) برای تابع callback اسم میذاریم.

ولی موقع فراخوانی تابع اول – که تابع callback هم اونجا تعریف میشه – برای تابع دوم اسم نمیذاریم. و فقط از کلمه کلیدی function استفاده می کنیم.

کد بالا به صورت خلاصه و با حذف فضای خالی، به صورت زیر نوشته میشه:

        function func01(asghar){  //نام تابع کال بک رو اصغر گذاشتیم
            console.log("func01 executed");
            asghar();
        }

        func01 ( function(){ console.log("second function"); });

تعریف تابع callback وقتی تابع اول پارامتر دارد

خب ما تابع callback رو به صورت یک آرگومان به تابع اول پاس دادیم. اگر خود تابع اول هم پارامتر ورودی داشته باشه چکار می کنیم؟ هیچی. خیلی عادی رفتار می کنیم.

با تابع callback هم مدقیقا مثل یکی از آرگومانهای ورودی رفتار می کنیم.

آرگومانهای ورودی تابع اول رو به ترتیب می نویسیم و با کاما از هم جدا می کنیم و بعدش تابع callback رو می نویسیم.

        function firstFunc(myStr,mamad){
            alert(myStr);
            mamad();
        }
        firstFunc("salam" , function(){
            var a = 0;
            a++;
            alert("azizam" + a);
        });

توضیح کدهای بالا:

خط اول: تابع firstFunc رو تعریف کردیم. و متغیر myStr و تابع callback با نام mamad رو بعنوان پارامترهای ورودی این تابع مشخص کردیم.

خط دوم: یک دستور alert نوشتیم. این دستور ساده در اینجا، معادل تمام دستورهایی است که بدنه یک تابع دارد. در اینجا خواستیم مشخص کنیم که پیاده سازی و دستورات یک تابع، قبل از فراخوانی تابع callback نوشته می شوند.

خط سوم: تابع callback با نام ممد را فراخوانی کردیم. (اسمها رو عمداً اینجوری میذارم که فکر نکنید اینجاها باید دستور خاصی بنویسید یا از اسامی رزرو شده استفاده کنید.)

در واقع ما در اینجا نیاز داشتیم که تابع callback ما دقیقاً بعد از تمام دستورات تابع اولیه اجرا شود. در صورت نیاز، میتونید فراخوانی تابع callback رو در بین دستورات بدنه تابع اولیه هم قرار بدین.

خط چهارم: خالیه! 😀

خط پنجم: اینجا تابع firstFunc رو فراخوانی کردیم. مقدار استرینگ salam و تابع callback رو بعنوان آرگومان ووردی بهش پاس دادیم. تابع callback رو بدون اینکه اسم براش بنویسیم تعرف می کنیم.

دقت کنید که این تابع داخل پرانتز مربوط به رگومان ها تعرف شده.

خب این هم از داستان توابع جاوااسکریپت. امیدوارم که به دردتون بخوره. اگر سوالی داشتین حتما بپرسین ازم. جواب میدم.

موفق باشین

حامد عسکریان

برنامه نویس و عاشق تکنولوژی

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

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