◆ 何度も繰り返して実行するときに再定義できないと不便
◆ var はエラーでないから楽……ということでブログは基本 var です

ES6 が使えるようになってしばらく経ちました
このブログでも基本は ES6 構文で IE なんて知らないスタイルです

ですが let/const だけはあまり使っていません

というのも let/const って再定義(再宣言)できないんですよね
ブログに書くようなコピペして試して 数値調節してまた試して ってことをするには不向きです

let のところは貼り付けたらエラーになるので 宣言を飛ばしてコピペすることになります
ですが 最初にまとめて全部宣言なんてことはあまりなく必要なったら作るのであちこちに定義があっておもったより大変です

また const は変わらないですが let は値が変わるので それに加えて値をリセットしないといけません
宣言文をスキップするので 宣言時と同時に初期化していたものは代入して同じ値になるようにしないといけません

再定義できないのはつらい

例を出すと こういうコードがあったとします
const a = 1
let b = 2
console.log(a + b)
b **= 3
const c = a * b
console.log(a + b + c)

数値を変えて試すので何度もコンソールで実行します

2 回目は const, let が書けないので削除して
console.log(a + b)
b **= 3
console.log(a + b + c)

値を戻さないといけないので
b = 2
console.log(a + b)
b **= 3
console.log(a + b + c)

2 回目用に別のコードを用意しないといけなくて 同じコードのコピペで動かないです

さらに c は本来は変更しないので const ですが コンソールでの繰り返し実行で それ以前の値を変えたくなって b **= 2 になったり a = 3 になったりと変更したときに c を変えないといけません

なのでこのために let にして
// 1 回目
const a = 1
let b = 2
console.log(a + b)
b **= 3
let c = a * b
console.log(a + b + c)

// 2回目
b = 2
console.log(a + b)
b **= 3
c = a * b
console.log(a + b + c)

すっごくめんどい!!!

ページリロード

さすがにやってられないです
もっと楽なのが ページリロードです

変数がリセットされるので再度貼り付けで実行できます

ただ 変数もリセットされますが リロードも多少時間がかかります
そのときに開いてるページによっては数秒ということもあります

さらにライブラリのような関数類を別に一度だけコピペして追加した上で 繰り返し試すということをしていた場合は リロードでそこも消えてしまうので関数類も毎回貼り付ける必要が出てきます

なのでリロードは避けたいです

正攻法 { }

リロードと違ってコードを追加しないといけないですが ベストな方法は {} で囲むことだと思います
{
const a = 1
let b = 2
console.log(a + b)
b **= 3
let c = a * b
console.log(a + b + c)
}
でもこれもインデントつけて {} 書いてっと面倒があります
1 回程度なら大したことじゃないのですが さっとコンソールで試したいときに毎回書くのはさすがに疲れます

var はすごかった

しかし 昔ながらの var
これだと全く問題なくそのままコピペでおっけいです

let/const の機能は良いと思うのですが再定義でエラーというのは スクリプト言語にいらない機能だと思うんですよね
C# インタプリタでも var 繰り返し書いてもエラーないというのに……


とまぁ そんな理由で基本は var になってます
const ばかりなときもありますが それはコンソールお試し用じゃなくてちゃんと書いたところから持ってきた ということだと思ってください

言いたかったことは

var が便利! という感じでまとまりそうですが 一番の言いたかったことはそこじゃないです

このブログでは(手抜きで) var ですが ES6 を使う環境なら 基本 const ループ変数などの書き換えるつもりのところは let にしておいたほうがいいです
スコープは小さいほうがバグは減りますし const でイミュータブルにしておくことで間違った書き換えがなく 読む側も書き換わらないことが保証されていて読みやすいです

このブログで var になってるけどちゃんとしたもの作るときには var 使ったほうがいいってことじゃないですよ