JavaScriptでは基本const、どうしても使うときはlet。varは使ってはならない。

varは昔のJanaScriptの名残。後方互換性を大事にしているので、今でも一応使えるが、使ってはならない。

 

■再宣言と再代入ができてしまう

 →一回var aaa と宣言した後にもう一度 var aaaできてしまう(再宣言)

 → var aaa=2 した後に var=3 できてしまう。(再代入)

  →JavScript的には上記のような再代入も好ましくないらしい。関数型的なスタイルで中身変更していくべき?

  →ちなみにletは再代入だけできる。

 

■変数の参照が巻き取られる

 →まだ宣言してない変数に代入できてしまう

 

■スコープの単位が関数

 if文のようなブロックの中で宣言した関数が、その外から使えてしまう

 一般的なプログラミング言語はスコープの単位がブロックなので、これは起きない