به آموزشگاه مجازی سینا خوش آمدید!

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

امتیاز
(0)

عبارت تابعی(Function Expression) چیست؟

یک عبارت تابعی در جاوا اسکریپت، یک تابع است که در یک متغیر ذخیره شده است.

// تابع استاندارد
function multiply(a, b) {
  return a * b;
}

// عبارت تابعی
const multiply = function(a, b) {
  return a * b;
};

مثال شماره 1

 const multiply = function (a, b) {return a * b}; 
امتحان کنید

پس از اینکه یک عبارت تابعی در یک متغیر ذخیره شد، این متغیر می تواند بعنوان یک تابع مورد استفاده قرار گیرد:

مثال شماره 2

 let z = multiply(4, 3); 
امتحان کنید

تابع های بی نام 

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

تابع بالا، در حقیقت یک تابع بدون نام است. 

تابع هایی که در متغیرها ذخیره شده اند، نیازی به نام ندارند. 

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

مثال شماره 3 

اما عبارت های تابعی می توانند نام نیز داشته باشند:

const add = function add(a, b) {return a + b;};

عبارت های تابعی از سمی‌کالن(نقطه ویرگول) استفاده می کنند

یک عبارت تابعی، یک دستور(statement) در جاوا اسکریپت است.

پس علت اینکه عبارت تابعی معمولاً با یک سمی‌کالن خاتمه می یابد همین است. 

مثال شماره 4

const add = function(a, b) {
  return a + b;
};

تابع های ذخیره شده در متغیرها

چونکه یک عبارت تابعی، در یک متغیر ذخیره می شود، می تواند مانند یک مقدار(value) مورد استفاده قرار گیرد.

این روش، هنگامی که تابع ها را به دیگر تابع ها(callbacks) پاس می دهیم، مفید است.

یک عبارت تابعی می تواند به یک متغیر انتساب داده شود و بعنوان یک آرگومان به یک تابع دیگر پاس داده شود یا از یک تابع برگردانده(return) شود. 

مثال شماره 5

function run(fn) {
  return fn();
}

const sayHello = function() {
  return "Hello";
};

run(sayHello);

تابع ها در مقایسه با عبارت های تابعی

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

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

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

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

تفاوت آنها زمانی است که در کدها مورد دسترسی قرار می گیرند. 


تعریف تابع ها در مقایسه با عبارت های تابعی

یک تعریف تابع(یا به سادگی، یک تابع) با استفاده از موارد زیر تعریف می شود:

  • کلمه‌ی کلیدی function
  • یک نام تابع
  • پارامترهای درون پرانتزها
  • یک بلوک از کدها، بین یک جفت آکولاد
function add(a, b) {return a + b;}

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

  • کلمه‌ی کلیدی function
  • پارامترهای درون پرانتزها
  • یک بلوک از کدها، بین یک جفت آکولاد
const add = function(a, b) {return a + b;};

مثال شماره 6

const sayHello = function() {
  return "Hello World";
};

sayHello();
امتحان کنید

تابع بالا در متغیر sayHello ذخیره شده است. برای اجرای آن، با استفاده از دستور sayHello() آن را فراخوانی می کنیم. 


بالا بردن تابع ها(Hoisting)

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

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

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

مثال شماره 7

let sum = add(2, 3); // این دستور کار می کند

function add(a, b) {return a + b;}

عبارت های تابعی، مشابه با تعریف های تابع، به سمت بالای کدها نمی روند(not hoisted).

آنها وقتی ایجاد می شوند که اجرای کدها به تعریف آنها برسد؛ و نمی توانند قبل از رسیدن به این نقطه صدا زده شوند. 

مثال شماره 8

let sum = add(2, 3); // ⛔ یک خطا تولید خواهد شد

const add = function (a, b) {return a + b;};
امتحان کنید

تفاوت های کلیدی تعریف تابع و عبارت های تابعی

شیوه ی نوشتاری یا سینتکس:

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


بالا رفتن(Hoisting) در میدان دید

تعریف های تابع به سمت بالای میدان دید می روند. اما عبارت های تابعی چنین نیستند. 


انعطاف پذیری(Flexibility)

تعریف های تابع در چگونگی و محلی که در آن مورد استفاده قرار می گیرند، انعطاف پذیری بیشتری را ارائه می دهند. 


چه زمانی از تعریف تابع یا عبارت تابعی استفاده کنیم؟

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

اشتباهات رایج

فراموش کردن سمی‌کالن(نقطه ویرگول)

عبارت های تابعی، دستور محسوب می شوند و باید با یک سمی‌کالن(;) خاتمه یابند. 


انتظار بالا رفتن(Hoisting) در میدان دید

تابع های پیکان(Arrow) به سمت بالای میدان دید بالا نمی روند. 

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


گیج شدن در ارجاع و فراخوانی(صدا زدن)

sayHello نام تابع است اما sayHello() باعث می شود تابع صدا زده شود. 


گیج شدن در نام تابع ها و متغیرها

در عبارت ها(expressions)، نام متغیر، مرجع تابع است. 

 


منبع: www.w3schools.com/js

 

  • بازدید: 25

نوشتن دیدگاه

لطفا نظرات خود را بیان کنید. به سوالات در سریع ترین زمان پاسخ داده خواهد شد.اما به نکات زیر توجه کنید:
1. سعی کنید نظرات شما مرتبط با مقاله ی مورد نظر باشد، در غیر این صورت پاسخ داده نخواهد شد.
2. سوالات خود را به صورت کوتاه بیان کنید و از پرسیدن چند سوال به طور همزمان خودداری کنید.
3. سوال خود را به طور واضح بیان کنید و از کلمات مبهم استفاده نکنید.

ارسال