Javascriptで変数の宣言でvarを使わない?

はい、モダンなJavaScriptでは基本的に var は使わず、let または const を使うのが推奨です。
理由は主に以下の通りです。

1. var のスコープが分かりにくい

  • var は 関数スコープ(function scope)で、ブロック {} の中で宣言しても外からアクセスできてしまいます。
  • 一方、let と const は ブロックスコープ(block scope)で、if や for の中だけで有効になります。
Javascript
if (true) {
    var x = 1;
    let y = 2;
}
console.log(x); // 1(アクセスできてしまう)
console.log(y); // ReferenceError(アクセス不可)

2. var は巻き上げ(hoisting)で予期せぬ動作をする

  • var は宣言がスコープの先頭に自動的に移動(巻き上げ)されますが、初期化は移動しません。
  • これにより、意図しない undefined が発生することがあります。 
Javascript
console.log(a); // undefined(エラーではない) 
var a = 5;

3. 再宣言できてしまい、バグの原因になる

  • 同じスコープ内で var は再宣言可能です。
  • let や const は再宣言できないため、安全です。
Javascript
var num = 1; 
var num = 2; // エラーにならない(上書きされる)
 
let count = 1; 
let count = 2; // SyntaxError(安全)

4. 推奨される使い分け

  • const: 値を再代入しない変数(デフォルトはこれ)
  • let: 再代入が必要な変数
  • var: 基本的に使わない(古いコードや特殊な互換性が必要な場合のみ)

5. まとめ

  • 新しいコードでは var は避ける
  • const を基本に、必要なときだけ let
  • var はレガシーコードや古いブラウザ対応時のみ検討

コメント