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

السؤال

نشر

image.thumb.png.f7611bb9641f9c5ea597fb7fb2df97c3.pngg

الارقام الظاهرة 

رقم 4

ورقم 7

ما مصدرهم ومادلالتهم ولماذا يظهروا 

وفى حالة تكررا الكود يظهر رقم 10 ثم التكرار يظهر رقم 13 وعند كل تكرار للكود يظهر رقم قبل نتيجة الكود كما هو موضح بالاسكرين؟!!

 

Recommended Posts

  • 0
نشر

لاحظ الرقم 4 و 7 تم طباعتهم بعد تنفيذ الدالة setTimeout . وهذا الرقم هو المعرف الخاص بالدالة setTimeout . حيث عند تنفيذ الدالة setTimeout يتم إعادة معرف خاص بهذا الكود ويمكنك من خلال هذا المعرف إلغاء تنفيذ الدالة setTimeout .

const timer = setTimeout(() => console.log("Hidden"), 5000);
clearTimeout(timer)

لاحظ أن ال timer في الكود السابق هو الرقم الذي تم إعادة من setTimeout وهو مثل الرقم 4  و 7 . وقمنا بإستخدامه بداخل الدالة clearTimeout لإيقاف المؤقت وستجد أن الرسالة لن يتم طباعتها لأنه تم إيقاف الدالة من التنفيذ .

بتاريخ منذ ساعة مضت قال Yehia Amin2:

وفى حالة تكررا الكود يظهر رقم 10 ثم التكرار يظهر رقم 13 وعند كل تكرار للكود يظهر رقم قبل نتيجة الكود كما هو موضح بالاسكرين؟!!

كما أخبرتك مع كل تكرار وتنفيذ ل setTimeout يتم إعادة معرف فريد لهذه الدالة أى أنه أى رقم يظهر لك فهو المعرف الخاص ب setTimeout التي قمت بتنفيذها .

  • 0
نشر
بتاريخ On 29‏/5‏/2026 at 12:27 قال Yehia Amin2:

وفى حالة تكررا الكود يظهر رقم 10 ثم التكرار يظهر رقم 13 وعند كل تكرار للكود يظهر رقم قبل نتيجة الكود كما هو موضح بالاسكرين؟!!

كلما استخدمت setTimeout (أو setInterval)، يقوم المتصفح بزيادة العداد الداخلي للأرقام التعريفية بمقدار 1. هذا العداد لا يعود للصفر أبداً طالما أنك لم تقم بعمل تحديث (Refresh) للصفحة.

بما أنك تقوم بتنفيذ ثلاث دوال setTimeout في كل مرة تضغط فيها على Enter، فإن العداد يقفز بمقدار 3 في كل مرة:

  • 0
نشر

تلك مُعرفات المؤقت Timeout IDs، وسببها استدعاء دالة setTimeout() في لغة جافا سكريبت، حيث المتصفح يقوم بإنشاء مؤقت Timer في الخلفية لتنفيذ الكود بعد الوقت المكتوب.

ولكي تتمكن من التحكم في المؤقت لاحقاً مثلاً لإلغائه قبل أن يبدأ، تقوم دالة setTimeout() تلقائياً بإرجاع قيمة رقمية فريدة عدد صحيح موجب تُسمى Timeout ID.

يمكنك استخدام الرقم مع دالة clearTimeout() لإيقاف تشغيل المؤقت إذا أردت ذلك، مثل:

let timerId = setTimeout(() => { كود هنا }, 5000);
clearTimeout(timerId); 

وتظهر الأرقام في الكونسول، لأنه عند تشغيل مجموعة من الأسطر البرمجية في كونسول المتصفح دفعة واحدة، يقوم الكونسول تلقائياً بطباعة القيمة العائدة Return  لآخر سطر تم تنفيذه في هذه المجموعة، وهي:

setTimeout(() => {
   console.log("this is the third message");
}, 1000);

لذا الكونسول يعرض القيمة التي أعادتها الدالة الأخيرة مباشرة وهي رقم المعرّف الخاص بها، وتظهر بجانبها علامة القوس الخارجي < للإشارة إلى أنها القيمة المعادة من العملية السابقة مباشرة قبل البدء في إظهار نتائج طباعة الكود console.log

والمتصفح يُعيد أرقاماً تسلسلية تصاعدية لكل مؤقت يتم إنشاؤه في الصفحة، وبما أنك تقوم باستدعاء دالة setTimeout ثلاث مرات متتالية في كل مرة تشغل فيها الكود، فإن العملية تتم كالتالي:

في التشغيل الأول:

  • الدالة الأولى تأخذ المعرّف (مثلاً: 2).
  • الدالة الثانية تأخذ المعرّف التالي وهو (3).
  • الدالة الثالثة (السطر الأخير) تأخذ المعرّف (4).
  • الكونسول يطبع نتيجة السطر الأخير فقط، فيظهر لك الرقم 4.

في التشغيل الثاني (عند تكرار الكود):

  • الدالة الأولى تأخذ المعرّف التالي وهو (5).
  • الدالة الثانية تأخذ المعرّف (6).
  • الدالة الثالثة (السطر الأخير) تأخذ المعرّف (7).
  • الكونسول يطبع نتيجة السطر الأخير فقط، فيظهر لك الرقم 7.

في التشغيل الثالث:

  • يتم حجز الأرقام (8، 9، 10) للمؤقتات الثلاثة الجديدة.
  • الكونسول يطبع نتيجة السطر الأخير فقط، فيظهر لك الرقم 10.

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...