تعريف الوظائف في JavaScript

تم تعريف الوظائف في جافا سكريبت من خلال الوظيفة المدرجة ستعود " الكلمة المفتاحيةتعريف.

يمكنك استخدام وظيفةالبيانأو وظيفةالتعبير.

إعلان الوظيفة

في هذا الدرس، تعلمت سابقًا من خلال النحو التاليالبيانالوظيفة:

الوظيفة المدرجة ستعود " اسم الوظيفة(المتغيرات) {
   التعليمات التي يتم تنفيذها
}

الوظائف التي يتم إعلانها لا تنفذ مباشرة. يتم "حفظها للإستخدام لاحقًا" وستُنفذ في وقت لاحق عندما يتم استدعاؤها.

مثال

function myFunction(a, b) {
     return a * b;
}

جرب بنفسك

يُستخدم نقاط السطر لفصل الجملة القابلة للتنفيذ في جافا سكريبت.

بسبب الوظيفةالبيانليس جملة قابلة للتنفيذ، ويُستخدم نقاط السطر في نهايته بشكل غير شائع.

تعبير الوظيفة

يمكن استخدام الوظائف في جافا سكريبت أيضًاالتعبيرلتحديد.

يمكن حفظ تعبير الوظيفة في المتغير:

مثال

var x = function (a, b) {return a * b};

جرب بنفسك

بعد حفظ تعبير الوظيفة في المتغير، يمكن استخدام هذا المتغير كوظيفة:

مثال

var x = function (a, b) {return a * b};
var z = x(4, 3);

جرب بنفسك

;الوظائف الغير مسمىالدالة المدمجة

لا تحتاج الوظائف التي يتم حفظها في المتغيرات إلى اسم وظيفة. يتم استدعاؤها دائمًا باستخدام اسم المتغير.

يُستخدم نقاط السطر في نهاية الوظيفة لأنها جزء من جملة قابلة للتنفيذ.

مبنى Function()

كما رأيتم في الأمثلة السابقة، يتم تعريف الوظائف في جافا سكريبت من خلال الوظيفة المدرجة ستعود " الكلمات المفتاحية المحددة.

الوظيفة يمكن أن تكون أيضًا من خلال تسمية Function() وظيفة بناء الدوال المدمجة في JavaScript لتحديد.

مثال

var myFunction = new Function("a", "b", "return a * b");
يمكن استخدام الدوال كقيم:

جرب بنفسك

ليس من الضروري استخدام بناء الدوال.

مثال

var myFunction = function (a, b) {return a * b};
يمكن استخدام الدوال كقيم:

جرب بنفسك

في معظم الحالات، يمكنك تجنب استخدام new كلمة المفتاح.

رفع الدوال

في هذا الدرس، تعلمت سابقًا "رفع البيانات" (hoisting).

Hoisting هو عملية رفع البيانات في JavaScriptالبيانسلوك افتراضي لتحريك البيانات إلى أعلى النطاق الحالي.

يتم تطبيق رفع البيانات (Hoisting) على بيانات المتغيرات والadol.

لذلك، يمكن استدعاء الدوال في JavaScript قبل بياناتها:

myFunction(5);
 function myFunction(y) {
     return y * y;
}

لا يتم رفع الدوال المحددة باستخدام تعبير.

الدالة المدمجة

يمكن أن تكون تعبير الدالة "مدمجًا".

يتم تنفيذ تعبير الدالة المدمجة تلقائيًا، بدون تنفيذها.

تتم تنفيذ تعبير الدالة تلقائيًا إذا كان يعقبها }.

لا يمكنك تنفيذ دالة الاشارة بنفسها.

يجب أن تضيف أقواس حول الدالة لتوضيح أنها تعبير دالة:

مثال

(function () {
    var x = "Hello!!";      // سأقوم بندائي
}}()

جرب بنفسك

;في الواقع، الدالة أعلاه هيالدالة المدمجة

(الدوال الغير محددة الاسم).

يمكن استخدام الدوال كقيم

مثال

function myFunction(a, b) {
    return a * b;
}
يمكن استخدام الدوال كقيم:

جرب بنفسك

var x = myFunction(4, 3);

مثال

function myFunction(a, b) {
    return a * b;
}
يمكن استخدام الدوال في التعبيرات:

جرب بنفسك

var x = myFunction(4, 3) * 2;

الدوال هي كائنات الدامج في JavaScript typeofالوظيفة المدرجة ستعود "function

".

لكن من الأفضل أن تصف دالة JavaScript ككائن.جميع الدوال في JavaScript تحتوي علىوالخصائصالطريقة.

arguments.length ستقوم بالعودة بنوع الكائن الذي يتم استدعاؤه:

مثال

function myFunction(a, b) {
    return arguments.length;
}

جرب بنفسك

toString() الطريقة التي تعود بنوع الكائن هي:

مثال

function myFunction(a, b) {
    return a * b;
}
var txt = myFunction.toString();

جرب بنفسك

الدوال المحددة كخصائص العنصر تسمى طرق العنصر.

الدوال المصممة لإنشاء عناصر جديدة تسمى بناء الأنواع (بناء العنصر).

الدوال الشبيهة بالصيغة

تسمح الدوال الشبيهة بالصيغة باستخدام لغة قصيرة لكتابة تعبيرات الدوال.

لا تحتاج إلى كلمة المفتاح function، كلمة المفتاح return وكوما مزدوجة. لذا، قد يكون من الجيد الاحتفاظ بها:

مثال

// ES5
var x = function(x, y) {
  return x * y;
}
// ES6
const x = (x, y) => x * y;

جرب بنفسك

الدوال الشبيهة بالصيغة لا تحتوي على this الخاص بها. ليست مناسبة لتعريف طرق العناصر.

الدوال الشبيهة بالصيغة لم يتم الرفع. يجب تعريفها قبل استخدامها.

استخدام const أكثر أمانًا من استخدام var، لأن دالة التعبير دائمًا قيمة ثابتة.

إذا كانت الدالة عبارة عن جملة واحدة فقط، فإنه يمكن تقليل كلمة المفتاح return والكوما المزدوجة. لذا، قد يكون من الجيد الاحتفاظ بها:

مثال

const x = (x, y) => { return x * y };

جرب بنفسك

IE11 أو الإصدارات الأقدم لا تدعم الدوال الشبيهة بالصيغة.