ご挨拶
どうも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なし(グローバルオブジェクト)で変数を定義することはやめましょう!
変数定義はlet
かconst
。これがなういはずです。
当然メンターになったときのコードレビューでもその辺りはきっちり指摘させて頂きますので、ご期待ください!
コメント