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

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

مانند هر زبان برنامه‌نویسی پیشرفته دیگر، جاوااسکریپت هم تمام ویژگی‌های لازم برای نوشتن کدهای ماژولار با استفاده از توابع را پشتیبانی می‌کند. شما ممکن است توابعی مانند alert() و write() را در فصل‌های ابتدایی دیده باشید. ما این توابع را دوباره و دوباره استفاده کرده بودیم، اما آن‌ها فقط یکبار در جاوااسکریپت اصلی نوشته شده بودند.

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

تعریف تابع

قبل از استفاده از یک تابع، باید آن را تعریف کنیم. روش معمول برای تعریف یک تابع در جاوااسکریپت استفاده از کلمه‌ی کلیدی function است، دنبال شده توسط یک نام منحصر به فرد برای تابع، یک لیست پارامترها (ممکن است خالی باشد)، و یک بلوک اظهارات که به دور آن با دونقطه زده می‌شود، است.

سینتکس

سینتکس اصلی برای تعریف تابع در جاوااسکریپت به شرح زیر است:

function functionName(parameter-list) {
    statements
}

در کد بالا به جای functionName نام تابع قرار میگیرد، به جای parameter-list ورودی های تابع قرار میگیرد (که می‌تواند خالی باشد) در بخش statememnts هم کد هایی که باید به هنگام فراخوانی تابع اجرا شوند، نوشته می‌شوند.

این نوع تعریف تابع به عنوان تعریف تابع (function declaration )یا اظهار تابع (function statement) شناخته می‌شود.

مثال زیر یک تابع به نام sayHello را تعریف می‌کند که هیچ پارامتری نمی‌گیرد.

function sayHello() {
    alert("Hello there");
}

عبارت تابع (Function Expression)

عبارت تابع (Function Expression) در جاوااسکریپت به شما امکان می‌دهد تا یک تابع را به عنوان یک عبارت (expression) تعریف کنید. عبارت تابع مشابه تعریف تابع ناشناس (anonymous function declaration) است. عبارت تابع می‌تواند به یک متغیر اختصاص داده شود. سینتکس عبارت تابع در جاوااسکریپت به شرح زیر است:
const varName = function (parameter-list) {
    statements
};
در مثال زیر، ما یک تابع جاوااسکریپت را با استفاده از عبارت تابع تعریف کرده و آن را به یک متغیر به نام myFunc اختصاص داده‌ایم:
const myFunc = function (x, y){ 
   return x + y;
};

فراخوانی یک تابع

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

مثال

کد زیر دکمه را در خروجی نشان می‌دهد. هنگامی که بر روی دکمه کلیک می‌کنید، تابع sayHello() اجرا می‌شود. تابع sayHello() پیام “Hello there!” را در خروجی چاپ می‌کند:
<html>
<head>
   <script type="text/javascript">
      function sayHello() {
         alert("Hello there!");
      }
   </script>
</head>
<body>
   <p>Click the following button to call the function</p>
   <form>
      <input type="button" onclick="sayHello()" value="Say Hello">
   </form>
   <p> Use different text in the write method and then try... </p>
</body>
</html>

پارامترهای تابع

تا اینجا، توابعی را بدون پارامتر دیده‌ایم. اما امکان ارسال پارامترهای مختلف هنگام فراخوانی یک تابع وجود دارد. این پارامترهای ارسالی می‌توانند در داخل تابع ذخیره شده و هرگونه تغییر و تحلیلی بر روی آن پارامترها انجام شود. یک تابع می‌تواند چندین پارامتر را با کاما جدا کرده، دریافت کند:

مثال

مثال زیر را امتحان کنید. ما تابع sayHello خود را اینجا اصلاح کرده‌ایم. اکنون دو پارامتر دریافت می‌کند:
<html>
   <head>   
      <script type = "text/javascript">
         function sayHello(name, age) {
            document.write (name + " is " + age + " years old.");
         }
      </script>      
   </head>   
   <body>
      <p>Click the following button to call the function</p>      
      <form>
         <input type = "button" onclick = "sayHello('Zara', 7)" value = "Say Hello">
      </form>      
      <p>Use different parameters inside the function and then try...</p>
   </body>
</html>

دستور بازگشتی

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

به عنوان مثال، می‌توانید دو عدد را در یک تابع ارسال کنید، و سپس انتظار دارید که تابع حاصل ضرب آن‌ها را در برنامه فراخواننده‌تان برگرداند.

مثال

کد زیر یک تابع را تعریف می‌کند که دو پارامتر را پیش از بازگشت حاصل را در برنامه فراخواننده به یکدیگر متصل می‌کند. همچنین می‌توانید ببینید که چگونه از دستور بازگشتی برای برگرداندن مقدار استفاده شده است:
<html>
<head>
  <script type="text/javascript">
      function concatenate(first, last) {
         var full;
         full = first + last;
         return full;
      }
      function secondFunction() {
         var result;
         result = concatenate('Zara ', 'Ali');
         alert(result);
      }
   </script>
</head>
<body>
   <p>Click the following button to call the function</p>
   <form>
      <input type="button" onclick="secondFunction()" value="Call Function">
   </form>
   <p>Use different parameters inside the function and then try...</p>
</body>
</html>

توابع به عنوان مقادیر متغیر

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

مثال

در مثال زیر، یک تابع با استفاده از عبارت تابع اعلام کرده‌ایم و از تابع برای اتصال با رشته‌های دیگر استفاده می‌کنیم:
<html>
<body>
   <div id = "output"> </div>
   <script>
      const myFunc = function (){ return "Hello ";};
      document.getElementById("output").innerHTML = myFunc() + "Users.";
  </script>      
</body>
</html>

پست های مرتبط

مطالعه این پست ها رو از دست ندین!
Python - محدود کردن داده (MongoDB Limit)

Python – محدود کردن داده (MongoDB Limit)

Python MongoDB محدود کردن نتایج برای محدود کردن نتایج در MongoDB، از متد limit() استفاده می‌کنیم. متد limit() یک...

بیشتر بخوانید
Python - بروزرسانی (MongoDB Update)

Python – بروزرسانی (MongoDB Update)

به‌روزرسانی یک رکورد برای به‌روزرسانی یک رکورد یا سند در MongoDB، از متد update_one() استفاده می‌کنیم. پارامتر اول متد...

بیشتر بخوانید
Python - حذف کالکشن (MongoDB Drop Collection)

Python – حذف کالکشن (MongoDB Drop Collection)

حذف کالکشن شما می‌توانید یک جدول یا کالکشن در MongoDB را با استفاده از متد drop() حذف کنید. مثالحذف...

بیشتر بخوانید

نظرات

سوالات و نظراتتون رو با ما به اشتراک بذارید

برای ارسال نظر لطفا ابتدا وارد حساب کاربری خود شوید.