🐕

JavaScript の var と let と const の簡単なまとめ

2024/01/21に公開

違いがあんまりわかっていなかったので、簡単にまとめてみました。

var

グローバルまたは関数スコープで変数を宣言します。
変数はそのスコープからのみ参照できます。

// グローバススコープで変数を定義
var global_value = "global";

function func(){
  // OK: 外のスコープの変数を参照する事ができる
  console.log(global_value);

  var func_value = "local";
  function func2(){
    // OK: 外のスコープの変数を参照する事ができる
    console.log(func_value);

    var func2_value = "local2";
  }
  func2();

  // error: ここから func2 内のスコープの変数は参照できない
  console.log(func2_value);
}

func();

// error: ここから func 内のスコープの変数は参照できない
console.log(func_value);

参照

let

ブロックスコープのローカル変数を宣言します。
なのでブロックごとに独立した変数として扱われます。

let x = true;

// if 文で参照されるのは上で定義している x
if(x) {
  // ここで定義される変数は上で定義した x とはまた別の変数になる
  let x = false;

  console.log(x);
  // => false
}

// if のブロック内で変数の値を書き換えても影響がしない
console.log(x);
// => true

参照

const

let と同様にブロックスコープのローカル変数として宣言するが let とは違い再代入することはできない。

const x = 42;

// error: const で宣言した変数は書き換える事ができない
x = "homu";

参照

GitHubで編集を提案

Discussion