المؤقّتات
الغلاية فقرة، #pot. السكربت يكتب فيها cold. لا نموذج هنا ولا جرس الدكان.
المؤقت لا يوقف السكربت. السطر التالي يجري فورًا. الدالة تجري لاحقًا. مهلة 400 ملي ثانية تكتب hot. ألغها فتبقى الغلاية cold. الفاصل يعد 1 ثم 2 ثم 3 ويتوقف. السطر cold / hot / 3.
ليس الجرس
الصفحة السابقة جمعت same / 4 / undefined / number. كان ذلك المستند وvar وlet ونوع العرض. هذه الصفحة لا تقرأها. cold وhot كلمتان يكتبهما المؤقت على الغلاية.
السؤال الجديد: متى تتبدل الكلمة؟
السطر التالي لا ينتظر
setTimeout يطلب دالة وتأخيرًا بالملي ثانية. 400 أربعة أعشار الثانية، لا 400 ثانية. السجل تحت النداء يجري أولًا والغلاية ما زالت cold. الدالة تكتب hot وتسجّله لاحقًا.
let pot = document.getElementById("pot");
pot.textContent = "cold";
setTimeout(function () {
pot.textContent = "hot";
console.log(pot.textContent);
}, 400);
console.log(pot.textContent);
السجل الأول cold. السجل اللاحق hot. السكربت لم يجلس 400 ملي ثانية.
ألغِ الغليان
setTimeout يُرجع معرّفًا. clearTimeout بذلك المعرّف يسقط الدالة. الغلاية صارت cold وhot لا يصل.
let pot = document.getElementById("pot");
pot.textContent = "cold";
let boil = setTimeout(function () {
pot.textContent = "hot";
}, 400);
clearTimeout(boil);
console.log(pot.textContent);
السجل cold. الدالة أُسقطت، فالغلاية لا تصير hot.
عدّ ثلاث سكبات
setInterval ينادي الدالة مرة بعد مرة، هنا كل 300 ملي ثانية. كل نداء يضيف واحدًا. عند 3 يوقفها clearInterval. السجل هو 3، لا صعود بلا نهاية.
let pot = document.getElementById("pot");
let n = 0;
let tick = setInterval(function () {
n = n + 1;
pot.textContent = String(n);
if (n === 3) {
clearInterval(tick);
console.log(pot.textContent);
}
}, 300);
السجل 3. معرّف الفاصل هو tick. بلا clearInterval كان العدّ سيواصل الارتفاع.
المعرّف رقم
القيمة التي يُرجعها setTimeout رقم. ليست التأخير وليست كلمة hot. هذا المقطع يجدول دالة فارغة ليقرأ النوع فقط، ثم يلغيها حتى لا يجري شيء آخر.
let boil = setTimeout(function () {}, 400);
console.log(typeof boil);
clearTimeout(boil);
السجل number.
الصفر ما زال لاحقًا
تأخير 0 لا يعني «قبل السطر التالي». الدالة تنتظر حتى ينتهي هذا السكربت. الغلاية تصير now، وتلك الكلمة تُسجَّل، وبعدها تسجّل الدالة later.
let pot = document.getElementById("pot");
pot.textContent = "now";
setTimeout(function () {
console.log("later");
}, 0);
console.log(pot.textContent);
السجل الأول now. الثاني later. الصفر لم يقفز الطابور.
ماذا يعني التأخير
الوحدة ملي ثانية. صف الغلاية هو الذي تستخدمه هذه الصفحة.
📊 ماذا يعني التأخير
| التأخير | يعني | سهل الخلط |
|---|---|---|
| 0 | بعد انتهاء هذا السكربت | قبل السطر التالي |
| 400 | 0.4 ثانية | 400 ثانية |
| 1000 | ثانية واحدة | دقيقة واحدة |
السطر تحت الغلاية
السكربت يكتب cold ويخزّن تلك الكلمة فورًا. مهلة 400 ملي ثانية تخزّن hot. الفاصل يضيف واحدًا كل 300 ملي ثانية، يتوقف عند 3، ثم يجمع الكلمات الثلاث. hot يُخزَّن قبل السكبة الثالثة لأن 400 أصغر من 900.
<!DOCTYPE html>
<html>
<head>
<title>kettle-timer — page</title>
</head>
<body>
<p id="pot">blank</p>
<p id="line">…</p>
<script>
let pot = document.getElementById("pot");
let seen = [];
pot.textContent = "cold";
seen.push(pot.textContent);
setTimeout(function () {
pot.textContent = "hot";
seen.push("hot");
}, 400);
let n = 0;
let tick = setInterval(function () {
n = n + 1;
if (n === 3) {
clearInterval(tick);
seen.push(String(n));
document.getElementById("line").textContent = seen.join(" / ");
}
}, 300);
</script>
</body>
</html>
السطر cold / hot / 3. cold كان فوريًا. hot جاء من المهلة. 3 جاء من الفاصل. كلمة blank ذهبت. same / 4 / undefined / number هي الصفحة السابقة.
عند المنضدة
- اجعل الغلاية cold، وجدوِل hot لـ 400 ملي ثانية، وسجّل فورًا. السجل الأول cold. اللاحق hot.
- جدول hot ثم
clearTimeoutقبل أن يجري. السجل يبقى cold. - عدّ بـ
setIntervalوتوقف عند 3. السجل 3. - اقرأ
typeofالمعرّف. السجل number. - استخدم تأخير 0. السجلان now ثم later.
- اقرأ سطر الصفحة: cold / hot / 3.
أخطاء عند المنضدة
الغلاية تعرض cold أو hot أو عدًّا. لا تعرض سطر الجرس.
- توقع أن السجل الأول hot
- نسيان
clearTimeout، فيكتب غليانٌ أردت إسقاطه hot - ترك الفاصل يجاوز 3
- قراءة 400 على أنها 400 ثانية
- اعتبار تأخير 0 «قبل السطر التالي»
- قراءة السطر كـ same / 4 / undefined / number
احتفظ بهذا
- السطر التالي يجري قبل دالة المهلة
clearTimeoutيسقط تلك الدالة وتبقى الغلاية coldclearIntervalيوقف العدّ عند 3- المعرّف من
setTimeoutرقم - تأخير 0 ما زال يسجّل now قبل later
- سطر الصفحة cold / hot / 3
🧠 اختبر معرفتك
اختبر معرفتك
تحدى نفسك مع هذا الاختبار التفاعلي واكتشف مدى فهمك للموضوع
📝 التعليمات
- اقرأ كل سؤال بعناية
- اختر أفضل إجابة لكل سؤال
- يمكنك إعادة الاختبار عدة مرات كما تريد
- سيتم عرض تقدمك في الأعلى