javascript 変数宣言letとvarの違い

javascript 変数宣言letとvarの違い

javascriptの変数宣言であるletとvarの違い、ちゃんと説明できないことがあったので、サンプルコードと出力結果を記載

目次

let

スコープがブロックスコープ。 ES6以上でないと動作しない。

function hoge() {

  let x = 1;
  console.log("初期値:" + x); //1

  //let x = 2;→error
  x = 2;
  console.log("再代入:" + x); //2

  if (true){    
    let x = 3;
    console.log("ブロック内:" + x);    //3
  }

  console.log("最終:" + x); //2
}

hoge()

出力結果

初期値:1
再代入:2
ブロック内:3
最終:2

Var

スコープが関数スコープ 。古いブラウザでも対応している

function foo() {
  
  var x = 1;
  console.log("初期値:" + x); //1

  var x = 2;
  console.log("再宣言:" + x); //2

  x = 3;
  console.log("再代入:" + x); //3

  if (true){
    var x = 4;
    console.log("ブロック内:" + x); //4
  }

  console.log("最終:" + x); //4
}

foo()

出力結果

初期値:1
再宣言:2
再代入:3
ブロック内:4
最終:4