https://qiita.com/phanect/items/82c85ea4b8f9c373d684
一言でいうと、asyncはhtmlパースと並行読み込みする。deferは実行をhtmlパース後に遅延させる。
無し : scriptタグが出現→htmlパースを停止してスクリプトを読み込み→読み込み完了後に(htmlパースは停止したままで)スクリプトを実行→scriptタグの下からhtmlパースを再開。 async : scriptタグが出現→htmlパースと並行してスクリプトを読み込み→読み込み完了後にhtmlパースを停止してスクリプトを実行→停止していた箇所からhtmlパースを再開。 defer : scriptタグが出現→htmlパースと並行してスクリプトを読み込み→htmlパース完了後にスクリプトを実行。
実行順は、無し(上から下の記述順)≒async(スクリプト読み込み完了順)→defer (上から下の記述順)となる。