トップへ(mam-mam.net/)

Javascriptの変数宣言のvar,letの違いと定数宣言のconstについて

検索:

Javascriptの変数宣言のvar,letの違いと定数宣言のconstについて

javascriptの変数宣言には「var」と「let」の2種類がありますが違いがあります。
var」と「let」は変数宣言なのでどちらも値を変更できます。
const」は定数宣言なので値を変更できません。

var let const
値の変更可能可能不可
再宣言可能不可不可
スコープ外利用可能不可不可

値の変更

変数宣言である「var」と「let」は値の変更ができます。
しかし、定数宣言である「const」は値の変更ができません。

<script>
  var   v = "初期値";
  let   l = "初期値";
  const c = "初期値";

  v = "別の値";
  l = "別の値";
  c = "別の値";//値を変更しようとしたのでエラー
</script>

再宣言

変数宣言「var」は再宣言が可能です。
しかし、変数宣言「let」と定数宣言「const」は再宣言ができません。

<script>
  var   v = "初期値";
  let   l = "初期値";
  const c = "初期値";

  //var let constで再宣言
  var   v = "別の値";
  let   l = "別の値";//letで同じ変数を再宣言したのでエラー
  const c = "別の値";//constで同じ定数を再宣言したのでエラー
</script>

スコープ

スコープとは変数宣言、定数宣言を行った場所のことで、 通常は「{」から「}」の内側のことを表します。

<script>
  //変数zのスコープはグローバル
  let z="グローバル";

  //変数 a と b のスコープはtest関数内のローカル変数
  function test(){  //変数 a と b のスコープはここから
    let a=0;
    let b="";
  }  //変数 a と b のスコープはここまで
</script>


varはスコープ外でも利用できますが、 letconstはスコープ外からは利用できません。
スコープが無い変数をグローバル変数と呼ぶことがあります。
スコープがある変数をローカル変数と呼ぶこともあります。

<script>
  //変数zのスコープはグローバル
  let z="グローバル";

  if( z=="グローバル"){  //変数 v,l と 定数 c のスコープはここから
    var   v = "初期値";
    let   l = "初期値";
    const c = "初期値";
  }  //変数 v,l と 定数 c のスコープはここまで


  alert(z);//グローバル変数なので利用可能
  alert(v);//スコープ外でも利用可能
  alert(l);//スコープ外なのでエラー
  alert(c);//スコープ外なのでエラー
</script>

変数は様々な場所で使うのでスコープが重要になります。
なので変数宣言は「let」を使うことをお勧めします。