scriptタグに async / defer を付ける意味

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 (上から下の記述順)となる。