Ini adalah salah satu soalan temuduga bahagian hadapan yang popular. Ia menguji pengetahuan orang yang ditemuduga tentang HTML, JS dan Prestasi.
Ini ialah soalan #1 siri Soalan Temuduga Frontend. Jika anda ingin meningkatkan tahap persediaan anda atau kekal dikemas kini secara umum, pertimbangkan untuk mendaftar di FrontendCamp.
Teg skrip digunakan untuk menambahkan JavaScript pada halaman HTML. Ia boleh menjadi skrip sebaris atau skrip luaran.
<body> <!-- Some code before it --> <script> console.log("This is an inline script."); </script> <script src="https://example.com/external-script.js" /> <!-- Some code after it --> </body>
Semasa menghuraikan HTML, jika penyemak imbas menemui teg skrip ia akan menghentikan penghuraian HTML dan mula melaksanakan skrip JS. Jika ia sebaris, ia akan bermula dengan pelaksanaan terus tetapi jika ia adalah skrip luaran, ia akan dimuat turun dan kemudian dilaksanakan.
Pada masa ini, apabila skrip JS sedang dimuat turun dan dilaksanakan, penghuraian HTML disekat. Ia hanya boleh disambung semula setelah penyemak imbas selesai melaksanakan skrip JS.
Adakah anda nampak apa yang tidak kena di sini? Ini akan menyebabkan masalah prestasi untuk pengguna akhir. Jika kami mempunyai banyak skrip atau mana-mana skrip mengambil banyak masa untuk dilaksanakan, pengguna tidak akan melihat kandungan halaman untuk masa yang lama.
Untuk menyelesaikan perkara ini dengan tepat, kami mempunyai dua atribut: async dan defer.
Jika atribut async hadir, skrip akan dimuat turun selari dengan menghurai HTML dan dilaksanakan sebaik sahaja ia tersedia.
Jika berbilang skrip menggunakan atribut tak segerak, susunan pelaksanaan mungkin berbeza daripada susunan skrip tersebut muncul dalam HTML. Skrip yang tersedia dahulu akan dilaksanakan terlebih dahulu.
<body> <!-- Some code before it --> <script async src="https://example.com/external-script.js" /> <!-- Some code after it --> </body>
Jika atribut tangguh hadir, skrip akan dimuat turun selari dengan penghuraian HTML (sama seperti async) tetapi dilaksanakan selepas penghuraian HTML selesai dan sebelum melancarkan DOMContentLoaded.
Jika berbilang skrip menggunakan atribut tangguh, susunan pelaksanaan akan dikekalkan, tidak seperti async.
<body> <!-- Some code before it --> <script defer src="https://example.com/external-script.js" /> <!-- Some code after it --> </body>
MDN: Elemen skrip
FrontendCamp
Atas ialah kandungan terperinci Memahami async dan defer. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!