JavaScriptでのvarとletの違いについて
最近JavaScriptの勉強を初めて衝撃的だったので備忘録として。
varだと同じ変数名が使えてしまう
例えばvarだと以下のような事が許されてしまいます。
var a = 'str';
console.log(a); // strと出力
var a = 1;
console.log(a); // 1と出力
Javaとか静的型付け言語をやっていた身としては恐ろしい・・・
letだと変数名の重複は許されない
先ほどのコードを以下のようにletに直すと
let a = 'str';
console.log(a); // strと出力
let a = 1;
console.log(a); // 1と出力
その変数名はもう使われているという旨のエラーが出てくれます。
Uncaught SyntaxError: Identifier 'a' has already been declared
スコープの違い
上記の他にブロックスコープ/関数スコープの違いがあるようです。
以下の記事がわかりやすかったです。
letとvarの違い
基本的にはlet
変数名の重複やスコーピングを考えると基本的にはletを使った方が良いのかなと思います。