في سباق تتابع للسباحة يسبح كل فريق ثلاثة أنواع، ونريد زمن كل فريق الكلي. نكتب دالة بثلاثة معاملات مفصولة بفواصل، ونمرّر عند الاستدعاء ثلاثة وسائط بنفس الترتيب. ويمكن حفظ القيمة المُرجعة في متغير لنستخدمها بعد ذلك:
function sum(freestyle, breaststroke, backstroke) {
let time = freestyle + breaststroke + backstroke;
return time;
}
let teamRed = sum(39.5, 60.5, 58.5);
let teamBlue = sum(40, 62, 58);
console.log(teamRed);
console.log(teamBlue);
console.log("The fastest time is " + Math.min(teamRed, teamBlue));158.5 160 The fastest time is 158.5
| المصطلح | في المثال |
|---|---|
| المعاملات: أسماء في التعريف | freestyle, breaststroke, backstroke |
| الوسائط: قيم في الاستدعاء | 39.5, 60.5, 58.5 |
| حفظ الناتج في متغير | let teamRed = sum(39.5, 60.5, 58.5); |
Math.min(teamRed, teamBlue). وأسماء المعاملات تخص الدالة وحدها، فلا علاقة لها بأسماء المتغيرات خارجها.حلقة وشرط داخل دالة
في سحب المدرسة تفوز التذكرة إذا كان رقمها يقبل القسمة على 7، أي أن باقي قسمته على 7 صفر: num % 7 == 0. لنعدّ التذاكر الفائزة من 0 إلى 999 نحتاج إلى عدّاد يبدأ من 0، وحلقة تمر على كل الأرقام، وشرط يزيد العدّاد، ثم نطبع العدّاد بعد الحلقة:
let count = 0;
for (let i = 0; i <= 999; i++) {
if (i % 7 == 0) {
count++;
}
}
console.log(count);143
نضع البرنامج نفسه داخل دالة، ونجعل آخر رقم معاملًا، فنستطيع إعادة استخدامه لأي عدد من التذاكر:
function countWinners(lastNum) {
let count = 0;
for (let i = 0; i <= lastNum; i++) {
if (i % 7 == 0) {
count++;
}
}
return count;
}
console.log(countWinners(999));
console.log(countWinners(100));143 15
وبعض الدوال تطبع النتيجة بنفسها، فلا تحتاج إلى return. نستدعيها في سطر مستقل دون console.log:
function printWinners(from, to) {
for (let i = from; i <= to; i++) {
if (i % 7 == 0) {
console.log(i + " wins");
}
}
}
printWinners(120, 150);126 wins 133 wins 140 wins 147 wins
return count; بعد الحلقة. لو وضعتها داخلها لخرجت الدالة في أول دورة وأرجعت عددًا خاطئًا، لأن return تُنهي الدالة فورًا.تدريبات
أنشئ الدالة calculation3 بالمعاملات a وb وc تُرجع حاصل ضربها a * b * c، فيُطبع 24.
function ___(___) {
let result = ___;
return result;
}
console.log(calculation3(2, 3, 4));اضغط «تشغيل» لترى النتيجة. قبل السطر الأخير أعلن المتغير num1 وأسند إليه ناتج calc3(5, 10, 15). ثم في النهاية أعلن num2 بناتج calc3(4, 4, 4) واطبعه.
function calc3(a, b, c) {
let result = a * b * c;
return result;
}
console.log(num1);اضغط «تشغيل» لترى النتيجة. أعلن teamGreen بناتج sum(41, 59.5, 60)، ثم أكمل السطر الأخير ليطبع أصغر زمن بين المتغيرات الثلاثة teamRed و teamBlue و teamGreen.
function sum(freestyle, breaststroke, backstroke) {
let time = freestyle + breaststroke + backstroke;
return time;
}
let teamRed = sum(39.5, 60.5, 58.5);
let teamBlue = sum(40, 62, 58);
let teamGreen = ___;
console.log("The fastest time is " + Math.min(___));اضغط «تشغيل» لترى النتيجة. أكمل البرنامج ليعدّ التذاكر الفائزة في سحب أصغر من 0 إلى 500: حلقة for يبدأ فيها i من 0 ما دام i <= 500، وبداخلها إذا كان باقي قسمة i على 7 يساوي 0 زِد count بمقدار 1. يُطبع 72.
let count = 0; console.log(count);
اضغط «تشغيل» لترى النتيجة. اكتب الشرط: إذا كان i يقبل القسمة على 3 يُطبع i.
for (let i = 1; i < 10; i++) {
if (___) {
console.log(i);
}
}اضغط «تشغيل» لترى النتيجة. أنشئ دالة timesTable بالمعامل n تطبع جدول ضرب n من 1 إلى 5 بالشكل 7 x 1 = 7. ثم استدعها بـ 7.
اضغط «تشغيل» لترى النتيجة. أنشئ دالة countPrizes بمعاملين students وevery تُرجع عدد الطلاب الفائزين بجائزة: الطلاب مرقمون من 1 إلى students، ويفوز كل طالب رقمه يقبل القسمة على every. اطبع countPrizes(40, 4) ثم countPrizes(100, 6) (الناتج 10 ثم 16).
تلميح
عدّاد يبدأ من 0، وحلقة من 1 إلى students، وreturn count; بعد الحلقة.اضغط «تشغيل» لترى النتيجة. النقاط الرئيسية
- دالة بعدة معاملات
function f(a, b, c)تُستدعى بنفس عدد الوسائط وترتيبها:f(1, 2, 3). - احفظ الناتج في متغير:
let x = f(1, 2, 3);، ومرّر المتغيرات كوسائط. - يمكن وضع حلقة وشرط داخل الدالة؛ و
n % 7 == 0تعني أن n يقبل القسمة على 7. returnتُنهي الدالة فورًا، فضعها بعد الحلقة؛ والدالة التي تطبع بنفسها لا تحتاج إليها.