الدوال العادية في لغة JavaScript


الدوال العادية في لغة JavaScript

يا هلا والله! اليوم بنتكلم عن الدوال العادية في جافاسكريبت، اللي هي أساس كل شيء تقريباً. سهلة ومباشرة، وما فيها تعقيدات.

وشي الدوال العادية؟

ببساطة، الدالة هي مجموعة من الأوامر اللي نكتبها مرة وحدة ونقدر نناديها وننفذها أي وقت نحتاجه. تخيلها كـ "وصفة" أو "مهمة" محددة.

كيف نكتب دالة عادية؟

فيه طريقتين أساسيتين: إعلان الدالة (Function Declaration) وتعبير الدالة (Function Expression).

1. إعلان الدالة (Function Declaration)

هذي أسهل وأكثر شي تشوفه. تبدأ بكلمة function، بعدين اسم الدالة، بعدين أقواس () ممكن نحط فيها مدخلات (Parameters)، بعدين أقواس المجموعة {} اللي نحط فيها الكود حق الدالة.

ملاحظة: إعلان الدالة تقدر تناديها قبل ما تكتبها في الكود (هذا يسمونه Hoisting).

function greet() {
        console.log("هلا والله بالجميع!");
    }

2. تعبير الدالة (Function Expression)

هنا نحط الدالة داخل متغير. الدالة نفسها مالها اسم (تصير دالة مجهولة - Anonymous Function)، ونستخدم اسم المتغير عشان نناديها.

const sayHello = function() {
        console.log("كيف حالك يا بطل؟");
    };

ملاحظة: تعبير الدالة ما تقدر تناديها قبل ما تعرفها (يعني ما فيها Hoisting زي إعلان الدالة).

كيف ننادي الدالة؟

بعد ما نكتب الدالة، عشان نشغلها ونخليها تسوي شغلها، نناديها باسمها ونحط بعدها أقواس ().

greet(); // بتطبع: هلا والله بالجميع!
    sayHello(); // بتطبع: كيف حالك يا بطل؟

المدخلات والمخرجات (Parameters and Return Values)

المدخلات (Parameters)

الدوال غالباً تحتاج بيانات عشان تشتغل عليها. هذي البيانات نسميها parameters لما نكتب الدالة، و arguments لما نناديها. نحطها داخل الأقواس ().

function add(num1, num2) { // num1 و num2 هنا هي Parameters
        let sum = num1 + num2;
        console.log("المجموع هو:", sum);
    }

    add(5, 10); // 5 و 10 هنا هي Arguments
    add(20, 30);

المخرجات (Return Values)

أحياناً ما نبغى الدالة بس تطبع شي، نبغاها ترجع لنا قيمة نقدر نستخدمها في مكان ثاني في الكود. هنا نستخدم كلمة return.

function multiply(a, b) {
        return a * b; // الدالة بترجع حاصل الضرب
    }

    let result = multiply(4, 5); // بنخزن القيمة اللي رجعتها الدالة في المتغير result
    console.log("الناتج:", result); // الناتج: 20

    let anotherResult = multiply(10, 2) + 5;
    console.log("ناتج آخر:", anotherResult); // ناتج آخر: 25

ملاحظة: أي كود يجي بعد return داخل الدالة ما راح يتنفذ. الدالة توقف شغلها وترجع القيمة.

الـ this في الدوال العادية

هذي نقطة مهمة وحساسة شوي. في الدوال العادية، قيمة this تتحدد بناءً على طريقة استدعاء الدالة. في الغالب، إذا كانت الدالة مستقلة، قيمة this بتكون الكائن الشامل (Global Object) اللي هو window في المتصفح أو undefined في وضعية strict mode.

function showThis() {
        console.log(this);
    }

    showThis(); // في المتصفح: Window { ... }، في Node.js (بدون strict mode): Global { ... }، في strict mode: undefined

لما تكون الدالة جزء من كائن (Object Method)، قيمة this بتكون هي الكائن اللي استدعى الدالة.

const person = {
        name: "علي",
        sayName: function() {
            console.log("اسمي هو " + this.name);
        }
    };

    person.sayName(); // اسمي هو علي (هنا this يشير للكائن person)

خلاصة

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

كذا نكون خلصنا درس اليوم. بالتوفيق يا وحوش البرمجة!