بازگشت به درس

تابع setTimeout چه چیزی را نمایش خواهد داد?

اهمیت: 5

در کد پایین یک فراخوانی setTimeout زمان‌بندی شده وجود دارد سپس یک محاسبات سنگین اجرا می‌شود که بیشتر از 100 میلی‌ثانیه طول می‌کشد تا تمام شود.

تابع زمان‌بندی شده چه زمانی اجرا می‌شود؟

  1. بعد از حلقه.
  2. قبل از حلقه.
  3. در آغاز حلقه.

قرار است alert چه چیزی را نمایش دهد؟

let i = 0;

setTimeout(() => alert(i), 100); // ?

// فرض کنیم که زمان اجرای این تابع بیشتر از 100 میلی‌ثانیه است
for(let j = 0; j < 100000000; j++) {
  i++;
}

هر تابع setTimeout فقط بعد از اینکه کد کنونی تمام شود اجرا می‌شود.

متغیر i آخرین خواهد بود: 100000000.

let i = 0;

setTimeout(() => alert(i), 100); // 100000000

// فرض کنیم که زمان اجرای این تابع بیشتر از 100 میلی‌ثانیه است
for(let j = 0; j < 100000000; j++) {
  i++;
}