1. Script
Script does not add async and defer asynchronous properties, and loading the JS file blocks HTML parsing
2. Script Async
Script adds async property to implement asynchronous loading of JS files, but execution blocks HTML parsing
3. Script defer
Script adds the defer attribute to implement lazy loading of the JS file until the HTML parsing is complete
4. Execution conditions
Defer and Async are Boolean attributes that only work on script tags that use the SRC attribute.
If both defer and async properties exist, async takes effect.
5. Compatibility
async
Async is not supported in IE9 or later.
defer
As you can see below: Defer has bugs in IE9 and below and is not recommended.