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.