اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر

سأشرح لك الاختلافات بين الوظيفتين بالتفصيل:

الوظيفة الأولى:

تأخذ هذه الوظيفة واحدًا من المعاملات (`num`) وتزيد قيمته بواحد باستخدام المشغل `++`. ثم تسجل القيمة المضافة إلى `num` في وحدة التحكم باستخدام `console.log()`.

عند استدعاء الوظيفة `increase(1)`، ستزيد الوظيفة قيمة `num` إلى `2` وتقوم بطباعتها في وحدة التحكم.

الوظيفة الثانية

تأخذ هذه الوظيفة واحدًا من المعاملات (`number`) وتستخدم المشغل `++` لزيادة قيمة `number` بواحد، لكنها تعيد القيمة الأصلية لـ `number` قبل زيادتها باستخدام المشغل `++`.

 

عند استدعاء الوظيفة `increase1(1)`، ستعيد الوظيفة القيمة `1`، وليس القيمة المضافة `2`، لأن `return` يعيد القيمة الأصلية لـ `number` قبل زيادتها باستخدام `++`.

بالإضافة إلى ذلك، يمكن ملاحظة أن الوظيفة الأولى تستخدم `console.log()` لإظهار القيمة في وحدة التحكم، بينما تستخدم الوظيفة الثانية `return` لإرجاع القيمة من الوظيفة.

بشكل عام، يمكن القول أن الفرق بين الوظيفتين هوأن الوظيفة الأولى تزيد القيمة الممرة إليها وتعرض القيمة المضافة في وحدة التحكم، في حين تعيد الوظيفة الثانية القيمة الأصلية الممرة إليها وتزيد القيمة بعد ذلك.

  • 0
نشر

الدالة الأولى:

function increase(num) {
    num++;
    console.log(num);
}

تستقبل معامل واحد يُسمى num، وداخل الدالة، يتم استخدام المعامل المؤقت ++ لزيادة قيمة num بمقدار واحد.

ثم طباعة القيمة المحدثة لـ num، في هذه الحالة، سيتم زيادة قيمة num من 1 إلى 2، وبعد ذلك ستُطبع القيمة 2.

الدالة الثانية:

function increase(number) {
    return number++;
}

الدالة أيضًا تستقبل معامل واحد يُسمى number، داخل الدالة، يستخدم المعامل المؤقت ++ لزيادة قيمة number بمقدار واحد.

ومع ذلك، يتم إرجاع القيمة الأصلية لـ number (قبل زيادتها)، حيث ستُرجع الدالة قيمة 1 (القيمة الأصلية لـ number) وليس القيمة المحدثة (2).

ولكن ما السبب؟

السبب يكمن في المعامل ++، فهو معامل يُستخدم لزيادة قيمة متغير بمقدار واحد.

وهناك فرق بين استخدام ++ قبل اسم المتغير وبعده.

فإذا استخدمته قبل اسم المتغير ويعرف باسم pre-increment:

++num

ستتم زيادة قيمة المتغير ومن ثم يتم استخدام القيمة المحدثة. أما إذا استخدمته بعد اسم المتغير، ويعرف باسم post-increment:

num++،

فسيتم استخدام القيمة الأصلية للمتغير ومن ثم يتم زيادة قيمته.

مثال لتوضيح الاستخدام:

let num = 1;
console.log(++num); // ستُطبع القيمة 2 (تم زيادة القيمة قبل الاستخدام)
console.log(num++); // ستُطبع القيمة 2 (ت

بمعنى أنك لو أردت أن يتم إرجاع قيمة 2 من الدالة الثانية وليس 1 عليك تعديل المعامل ليصبح قبل المتغير بالشكل التالي:

function increase(number) {
    return ++number;
}

 

  • 0
نشر

الفرق بين الدالتين:

الدالة increase(num): في هذه الدالة، يتم زيادة قيمة المعامل num بواحد (num++) ثم يتم طباعة القيمة الجديدة على الإخراج (console.log(num)). في حالة استدعاء الدالة increase(1)، يتم تمرير القيمة 1 كقيمة المعامل num. بما أن العملية num++ تزيد القيمة بعد الاستخدام، فإن قيمة num ستكون 2 وهي قيمة المخرج (console.log) في هذه الحالة.

الدالة increase1(number): في هذه الدالة، يتم إرجاع قيمة المعامل number ثم يتم زيادة قيمة المعامل بواحد (number++). في حالة استدعاء الدالة increase1(1)، يتم تمرير القيمة 1 كقيمة المعامل number. وبما أن العملية number++ تزيد القيمة بعد الاستخدام، فإن قيمة المعامل المُرجَعَة ستكون 1 وليس 2. ومع ذلك، في المثال المعطى، لم يتم طباعة القيمة المُرجَعَة من الدالة increase1() بواسطة console.log، لذلك لن يتم عرضها في الإخراج.

في الحالة الأولى، الدالة increase() تقوم بطباعة القيمة المحدثة من num بعد الزيادة (2)، بينما في الحالة الثانية، الدالة increase1() تقوم بإرجاع القيمة الأصلية من number قبل الزيادة (1).

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...