شبيبة تعليمي

شبيبة المنزل مقدمة شبيبة شبيبة إلى أين إخراج JS بيانات شبيبة بناء جملة JS تعليقات JS متغيرات JS JS Let شبيبة كونست مشغلي JS شبيبة الحساب احالة JS أنواع بيانات JS وظائف JS كائنات JS أحداث شبيبة سلاسل شبيبة طرق سلسلة JS بحث سلسلة JS JS String Templates أرقام شبيبة طرق عدد JS صفيفات JS طرق صفيف JS ترتيب صفيف JS تكرار صفيف JS JS Array Const تواريخ شبيبة تنسيقات التاريخ JS طرق الحصول على تاريخ JS طرق تعيين تاريخ JS شبيبة الرياضيات شبيبة عشوائية شبيبة منطقية مقارنات شبيبة شروط JS مفتاح JS JS Loop For JS Loop For In. شبيبة حلقة JS لـ Of شبيبة حلقة بينما شبيبة استراحة شبيبة تكرارات مجموعات JS خرائط شبيبة شبيبة تايبوف JS نوع التحويل شبيبة Bitwise JS RegExp أخطاء JS شبيبة النطاق رفع JS وضع JS الصارم شبيبة هذه الكلمة دالة سهم JS فئات JS شبيبة شبيبة تصحيح أخطاء JS دليل أسلوب JS أفضل ممارسات JS أخطاء JS أداء JS شبيبة الكلمات المحجوزة

إصدارات JS

إصدارات JS JS 2009 (ES5) شبيبة 2015 (ES6) شبيبة 2016 شبيبة 2017 شبيبة 2018 شبيبة آي إي / إيدج تاريخ شبيبة

كائنات JS

تعريفات الكائن خصائص الموضوع طرق الكائن عرض الكائن موصلي الكائنات منشئو الكائنات نماذج الكائن كائن تكرارات مجموعات الكائن خرائط الكائن مرجع الكائن

وظائف JS

تعريفات الوظائف معلمات الوظيفة استدعاء الوظيفة استدعاء الوظيفة تطبيق الوظيفة عمليات إغلاق الوظائف

فئات JS

مقدمة عن الفصل الوراثة الطبقية فئة ثابتة

شبيبة آسينك

عمليات الاسترجاعات JS شبيبة غير متزامن وعود شبيبة شبيبة Async / انتظار

JS HTML DOM

مقدمة DOM طرق DOM مستند DOM عناصر DOM DOM HTML نماذج DOM DOM CSS الرسوم المتحركة DOM أحداث DOM مستمع أحداث DOM التنقل في DOM عقد DOM مجموعات DOM قوائم عقدة DOM

متصفح JS BOM

نافذة JS شاشة JS موقع JS تاريخ شبيبة شبيبة ملاح تنبيه منبثق لـ JS توقيت شبيبة ملفات تعريف الارتباط JS

JS Web APIs

مقدمة واجهة برمجة تطبيقات الويب واجهة برمجة تطبيقات نماذج الويب واجهة برمجة تطبيقات سجل الويب واجهة برمجة تطبيقات تخزين الويب Web Worker API واجهة برمجة تطبيقات جلب الويب واجهة برمجة تطبيقات تحديد الموقع الجغرافي على الويب

شبيبة أجاكس

مقدمة أجاكس أجاكس XMLHttp طلب AJAX استجابة AJAX ملف AJAX XML أجاكس بي إتش بي أجاكس آسيا والمحيط الهادئ قاعدة بيانات أجاكس تطبيقات أجاكس أمثلة AJAX

شبيبة شبيبة

مقدمة JSON بناء جملة JSON JSON مقابل XML أنواع بيانات JSON تحليل JSON تنسيق JSON كائنات JSON صفائف JSON خادم JSON JSON PHP JSON HTML جسون جسونب

JS مقابل jQuery

محددات jQuery jQuery HTML jQuery CSS jQuery DOM

شبيبة الرسومات

شبيبة الرسومات قماش شبيبة شبيبة بلوتلي JS Chart.js مخطط جوجل JS شبيبة D3.js

أمثلة JS

أمثلة JS JS HTML DOM إدخال JS HTML كائنات JS HTML أحداث HTML متصفح JS محرر JS تمارين شبيبة شبيبة مسابقة شهادة JS

مراجع JS

كائنات جافا سكريبت كائنات HTML DOM


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


يتم تعريف وظائف JavaScript بالكلمة functionالأساسية.

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


إقرارات الوظيفة

في وقت سابق من هذا البرنامج التعليمي ، تعلمت أنه يتم الإعلان عن الوظائف بالصيغة التالية:

function functionName(parameters) {
  // code to be executed
}

لا يتم تنفيذ الوظائف المعلنة على الفور. يتم "حفظها لاستخدامها لاحقًا" ، وسيتم تنفيذها لاحقًا ، عند استدعائها (يتم استدعاؤها).

مثال

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

تُستخدم الفواصل المنقوطة لفصل عبارات JavaScript القابلة للتنفيذ. نظرًا لأن إعلان
الوظيفة ليس عبارة قابلة للتنفيذ ، فليس من الشائع إنهاءها بفاصلة منقوطة.


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

يمكن أيضًا تعريف دالة JavaScript باستخدام تعبير .

يمكن تخزين تعبير دالة في متغير:

مثال

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

بعد تخزين تعبير دالة في متغير ، يمكن استخدام المتغير كدالة:

مثال

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

الوظيفة المذكورة أعلاه هي في الواقع وظيفة مجهولة (وظيفة بدون اسم).

لا تحتاج الوظائف المخزنة في متغيرات إلى أسماء وظائف. يتم استدعاءها دائمًا (تسمى) باستخدام اسم المتغير.

تنتهي الوظيفة أعلاه بفاصلة منقوطة لأنها جزء من تعليمة قابلة للتنفيذ.



الوظيفة () المُنشئ

كما رأيت في الأمثلة السابقة ، يتم تعريف وظائف JavaScript functionبالكلمة الأساسية.

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

مثال

const myFunction = new Function("a", "b", "return a * b");

let x = myFunction(4, 3);

ليس عليك في الواقع استخدام مُنشئ الدالة. المثال أعلاه هو نفسه الكتابة:

مثال

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

let x = myFunction(4, 3);

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


وظيفة الرفع

في وقت سابق من هذا البرنامج التعليمي ، تعرفت على "الرفع" ( JavaScript Hoisting ).

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

ينطبق الرفع على الإعلانات المتغيرة والإعلانات الوظيفية.

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

myFunction(5);

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

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


وظائف الاستدعاء الذاتي

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

يتم استدعاء تعبير ذاتي الاستدعاء (بدء) تلقائيًا ، دون أن يتم استدعاؤه.

سيتم تنفيذ تعبيرات الوظائف تلقائيًا إذا كان التعبير متبوعًا بـ ().

لا يمكنك استدعاء إعلان دالة ذاتيًا.

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

مثال

(function () {
  let x = "Hello!!";  // I will invoke myself
})();

الوظيفة المذكورة أعلاه هي في الواقع وظيفة ذاتية استدعاء مجهولة (وظيفة بدون اسم).


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

يمكن استخدام وظائف JavaScript كقيم:

مثال

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

let x = myFunction(4, 3);

يمكن استخدام وظائف JavaScript في التعبيرات:

مثال

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

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

الوظائف هي كائنات

العامل typeofفي JavaScript يسترجع "function" للوظائف.

ولكن ، يمكن وصف وظائف JavaScript بشكل أفضل ككائنات.

وظائف JavaScript لها خصائص وطرق .

تُرجع arguments.lengthالخاصية عدد الوسائط المتلقاة عند استدعاء الوظيفة:

مثال

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

يعيد toString()التابع الدالة كسلسلة نصية:

مثال

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

let text = 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 أو ما قبله.