Cả hai đều tải script song song với việc parse HTML nên không chặn render. Khác nhau ở thời điểm thực thi:
async: chạy ngay khi tải xong, có thể chen ngang lúc HTML còn đang parse. Thứ tự thực thi không đảm bảo (script nào tải xong trước chạy trước). Hợp cho script độc lập: analytics, ads.defer: chờ HTML parse xong mới chạy, trước sự kiệnDOMContentLoaded. Giữ đúng thứ tự các thẻ trong tài liệu. Hợp cho script phụ thuộc DOM hoặc phụ thuộc nhau.
Cả hai chỉ có tác dụng với script external (src); script inline bỏ qua chúng.
html
<script src="a.js" async></script>
<script src="b.js" defer></script>