varは昔のJanaScriptの名残。後方互換性を大事にしているので、今でも一応使えるが、使ってはならない。
■再宣言と再代入ができてしまう
→一回var aaa と宣言した後にもう一度 var aaaできてしまう(再宣言)
→ var aaa=2 した後に var=3 できてしまう。(再代入)
→JavScript的には上記のような再代入も好ましくないらしい。関数型的なスタイルで中身変更していくべき?
→ちなみにletは再代入だけできる。
■変数の参照が巻き取られる
→まだ宣言してない変数に代入できてしまう
■スコープの単位が関数
if文のようなブロックの中で宣言した関数が、その外から使えてしまう
一般的なプログラミング言語はスコープの単位がブロックなので、これは起きない