Pertama sekali, adalah disyorkan agar subjek membaca artikel tentang JavaScript Penjelasan terperinci tentang mekanisme operasi JavaScript Event Loop
Artikel ini menerangkan secara terperinci prinsip pengundian acara JavaScript
Mari kita bercakap tentang soalan topik:
1. Utas utama akan dilaksanakan terlebih dahulu Apabila test() dilaksanakan, dua setTimeout akan dimasukkan ke dalam baris gilir tugasan, dan kemudian amaran(0) akan dilaksanakan, jadi 0 akan dikeluarkan pada masa ini masa, nilai a ialah 19, kerana setTimeout Ia belum dilaksanakan lagi, tiada peluang tugasan lain untuk a;
2 Selepas utas utama dilaksanakan, ia kemudian meninjau baris gilir tugasan untuk melaksanakan tugasan yang dijadualkan Memandangkan masa tamat masa set pertama adalah lebih pendek daripada yang kedua, panggilan balik setTimeout pertama dilaksanakan terlebih dahulu. akan dikeluarkan selepas kira-kira 1s Satu langkah 19, kemudian a diberikan nilai 5;
3 Kemudian laksanakan setTimeout kedua Kerana kedua-dua setTimeout dimasukkan ke dalam baris gilir pada masa yang sama, panggilan balik setTimeout kedua akan dilaksanakan kira-kira 2s kemudian. dan kemudian akan menjadi Nilai yang ditetapkan ialah 4. Sebab mengapa ia lebih kurang 2s adalah kerana pemasa Javascript tidak tepat
Pertama sekali, adalah disyorkan agar subjek membaca artikel tentang JavaScript
Penjelasan terperinci tentang mekanisme operasi JavaScript Event Loop
Artikel ini menerangkan secara terperinci prinsip pengundian acara JavaScript
Mari kita bercakap tentang soalan topik:
1. Utas utama akan dilaksanakan terlebih dahulu Apabila test() dilaksanakan, dua setTimeout akan dimasukkan ke dalam baris gilir tugasan, dan kemudian amaran(0) akan dilaksanakan, jadi 0 akan dikeluarkan pada masa ini masa, nilai a ialah 19, kerana setTimeout Ia belum dilaksanakan lagi, tiada peluang tugasan lain untuk a;
2 Selepas utas utama dilaksanakan, ia kemudian meninjau baris gilir tugasan untuk melaksanakan tugasan yang dijadualkan Memandangkan masa tamat masa set pertama adalah lebih pendek daripada yang kedua, panggilan balik setTimeout pertama dilaksanakan terlebih dahulu. akan dikeluarkan selepas kira-kira 1s Satu langkah 19, kemudian a diberikan nilai 5;
3 Kemudian laksanakan setTimeout kedua Kerana kedua-dua setTimeout dimasukkan ke dalam baris gilir pada masa yang sama, panggilan balik setTimeout kedua akan dilaksanakan kira-kira 2s kemudian. dan kemudian akan menjadi Nilai yang ditetapkan ialah 4. Sebab mengapa ia lebih kurang 2s adalah kerana pemasa Javascript tidak tepat
Nyahpepijat anda sendiri akan membantu anda memahami mekanisme dengan lebih teliti
Selepas pemasa pertama dilaksanakan, a global telah menjadi 5
Perubahan a dalam fungsi ujian: 1-19-5-makluman terakhir(a)-4