التصريح عن الدوال في JavaScript

من موسوعة حسوب
مراجعة 15:37، 28 يناير 2018 بواسطة عبد اللطيف ايمش (نقاش | مساهمات) (استبدال النص - '\[\[تصنيف:(.*)\]\]' ب'{{SUBPAGENAME}}')
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

التصريح عن الدالة (function declaration) يُعرِّف دالةً لها معاملات (parameters) معيّنة. يمكن أيضًا تعريف الدوال عبر الدالة البانية Function وعبر تعابير تعريف الدوال (function expression).

البنية العامة

function name([param,[, param,[..., param]]]) {
   [statements]
}

name

اسم الدالة.

param

اسم الوسيط المُرَّر إلى الدالة، العدد الأقصى للوسائط التي يمكن تمريرها إلى الدالة يختلف حسب المحرِّك الذي يُفسِّر اللغة.

statements

التعابير البرمجية التي تُشكِّل جسم الدالة.

الوصف

الدالة المُصرَّح عنها هي كائن Function يملك وصولًا إلى جميع خاصياته ودواله ولها نفس سلوك كائنات Function، راجع صفحة الكائن Function لمعلومات تفصيلية عن الدوال.

يمكن تعريف الدوال أيضًا عبر تعبير برمجي (انظر صفحة function expression).

تُعيد الدوال القيمة undefined افتراضيًا، ولإعادة أيّة قيمة أخرى، فيجب أن تحتوي الدالة على التعبير البرمجي return الذي يُحدِّد ما هي القيمة التي يجب إعادتها.

الدوال المُنشَأة شرطيًا

يمكن التصريح عن الدوال شرطيًا، أي أنَّ التعبير البرمجي للتصريح عن الدالة يمكن أن يكون موجودًا ضمن تعبير if، وأغلبية المتصفحات ما عدا Firefox تُعامِل التصريحات الشرطية على أنها غير شرطية وتُنشِئ الدالة سواءً تحقق الشرط أم لم يتحقق؛ ولهذا السبب لا يجدر بنا التصريح عن الدوال شرطيًا وإنما يجب استخدام تعابير إنشاء الدوال (function expression) بدلًا منها.

استخدام الدوال قبل التصريح عنها

يمكن استخدام الدوال في JavaScript قبل التصريح عنها كما في المثال الآتي:

hoisted(); // "foo"

function hoisted() {
  console.log('foo');
}

لاحظ أنَّ الدوال المُنشَأة في تعابير برمجية (function expression) لا يمكن استخدامها قبل التصريح عنها:

notHoisted(); // TypeError: notHoisted is not a function

var notHoisted = function() {
   console.log('bar');
};

أمثلة

الشيفرة الآتية تُصرِّح عن دالة تُعيد القيمة الكلية للمشتريات، وذلك عند تمرير ثلاثة وسائط إليها:

function calc_sales(units_a, units_b, units_c) {
   return units_a * 79 + units_b * 129 + units_c * 699;
}

دعم المتصفحات

الميزة Chrome Firefox Internet Explorer Opera Safari
الدعم الأساسي نعم نعم نعم نعم نعم

مصادر ومواصفات