ご挨拶

どうもES2020の話も出始めてるみたいですね。
日進月歩なのでおいていかれないようしないといけませんねぇ。。。

では、そのに

今日はletの話題です。
ES6で登場したletくんですが、こいつとってもスグレモノです。
何がすごいってletを使うと同一スコープ内で変数の重複定義をエラーとしてくれるのですよ。(知ってるよ

JavaScriptって
「なんでもうぇるかむOKOK≒JavaScript」ぐらいの
認識だったのでかなり衝撃だったのですが、みんなはそうでもないのかな。(use strictを使ってなかったのがばれそう

具体的に言うと

重複定義OKの俺とお前はマジで兄弟パターン

// これまでJavaScriptではこのような鬼のような定義が可能だった。これからも可能。
// 100行先に同じ変数定義とかjs間の衝突とか気にした懐かしい記憶
var value1 = 1;
var value1 = 2;
console.log(value); // 2

変数巻き上げちゃってなんとなく動いてるぜパターン

// そしてvarは変数の巻き上げ+参照エラーがないのでこれでも動けちゃう。ゾンビのよう
console.log(value2); // undefined
var value2 = 2;
// 変数が巻き上げられるとブロックの先頭に変数の宣言が実行されるはずなので
// 実行時はこんな感じになってるはず↓※注イメージです
// var value2;
// console.log(valu2); // undefined
// var value2 = 2;

これが言いたかった!のletで参照エラー検出のパターン

// でもletを使うとちゃんと実行時に定義の重複をチェックして参照エラーにしてくれる。優秀!
var value3 = 1;
let value3 = 2; // reference error!!

というわけで慣れない人が使うととっても危険なので、
特に明確な理由がない限りvarで定義することやvarなし(グローバルオブジェクト)で変数を定義することはやめましょう!
変数定義はletconst。これがなういはずです。

当然メンターになったときのコードレビューでもその辺りはきっちり指摘させて頂きますので、ご期待ください!