2026.03.31JavaScriptのlet・var・constの違いTECH BLOG

JavaScriptのletvarconstの違い

JavaScriptには変数を宣言する方法として、varletconstの3つがあります。
どれも似ているように見えますが、挙動や使いどころが大きく異なります。

この記事では、それぞれの違いと実務での使い分けをわかりやすく解説します。


まずは違いを一覧で確認

let var const
再宣言 不可 不可
再代入 不可
スコープ ブロック 関数 ブロック
繰り返し構文 不可

varの特徴と注意点

■ 関数スコープ

varは関数スコープを持ちます。

if (true) {
  var a = 10;
}
console.log(a); // 10(外から見えてしまう)

ブロックを抜けても変数が使えてしまうため、意図しないバグの原因になります。

■ 再宣言できてしまう

var a = 10;
var a = 20;

console.log(a); // 20

同じ変数名で上書きされるため、バグに気づきにくいです。

■ 実務ではあまり使われない

現在では、varは基本的に使わず、letconstを使うのが一般的です。


letの特徴

■ ブロックスコープ

if (true) {
  let b = 10;
}
console.log(b); // エラー

ブロック内でのみ有効なので、安全に変数を扱えます。

■ 再代入はOK

let count = 0;
count = 1; // OK

値が変わる変数に適しています。

■ 再宣言はできない

let x = 10;
let x = 20; // エラー

constの特徴

■ 再代入できない(定数)

const pi = 3.14;
pi = 3.1415; // エラー

■ オブジェクト・配列は変更できる

const user = { name: "Taro" };
user.name = "Jiro"; // OK

「中身」は変更可能という点は重要です。

■ 必ず初期値が必要

const a; // エラー

繰り返し構文での違い

let(OK)

for (let i = 0; i < 3; i++) {
  console.log(i);
}

var(注意)

for (var i = 0; i < 3; i++) {}

console.log(i); // 3(外でも使えてしまう)

const(基本NG)

for (const i = 0; i < 3; i++) {} // エラー

※ただし for...of などでは使用可能

for (const item of [1, 2, 3]) {
  console.log(item);
}

実務での使い分け

  • 基本はconst
  • 値が変わる場合のみlet
  • varは使わない
const API_URL = "https://example.com"; // const
let count = 0; // let(変わる)

よくあるミス

■ constなら完全に変更不可だと思っている

const arr = [1, 2];
arr.push(3); // OK

■ varのスコープを誤解している

if (true) {
  var test = 1;
}
console.log(test); // 出てしまう

まとめ

  • varは古い書き方で基本使わない
  • letは再代入可能な変数
  • constは再代入不可(基本これを使う)
  • スコープの違いが一番重要