【JavaScript】const、let、var

変数宣言をする際の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を使わないようにしよう