変数宣言をする際のconst、let、varをおさらいする。
const 変数名 = 値;
- 再代入不可の変数宣言。
- JSONやクラスなどのオブジェクトである場合、プロパティにアクセスして値を変更できるため、厳密にImmutableではない。
- 最近は再代入をさせないコードが主流で、const以外使うなという風潮すらある。
let 変数名 = 値;
- 再代入可能な変数宣言。
- varと異なるのは、参照できるのが宣言後であること、同一の変数名はスコープ内で使用できないこと。
- 再代入が必要である場合は、varを使わずletを使用する。理由は後述。
var 変数名 = 値;
- 再代入可能な変数宣言。
- 宣言前から参照をできてしまうため、スコープをめちゃくちゃ汚染する。
- if や for のブロック内でも、ブロック外のスコープを汚染する。
- 以下のような場合でも、参照できる。
function testFunc() { console.log(x); // undefined if (true) { var x = "abcde"; } console.log(x); // abcde }
まとめ
- JavaScriptでは、varを使わないようにしよう