JavaScript Tips: const、let、var の比較

By JoeVu, at: 2023年11月25日18:33

Estimated Reading Time: __READING_TIME__ minutes

Javascript Tips: compare const and let and var statements
Javascript Tips: compare const and let and var statements

JavaScriptにおいて、letconstvarは変数を宣言するために使用されますが、スコープ、ホイスティング、および変更可能性の点でいくつかの違いがあります。

 

  1. var(変数宣言):
     

    • varで宣言された変数は関数スコープを持ち、そのスコープはその変数が定義されている関数に限定されます。
       
    • var変数は実行フェーズ中にそのスコープの先頭にホイスティングされます。つまり、コード内で宣言される前に変数を使用できます。
       
    • var変数は再宣言および再代入できます。
       
    function variable_declaration() {
      var x = 10;
      if (true) {
        var x = 20; // 上記と同じ変数であり、新しい変数ではありません
        console.log(x); // 20を出力
      }
      console.log(x); // 10ではなく20を出力
    }

  2. let(ブロックスコープ宣言):
     

    • letで宣言された変数はブロックスコープを持ち、そのスコープはその変数が定義されているブロック(波括弧のペア)に限定されます。
       
    • let変数もホイスティングされますが、インタープリターがコード内の宣言に到達するまで初期化されません。
       
    • let変数は再代入できますが、同じスコープ内で再宣言することはできません。
       
    function variable_declaration() {
      let x = 10;
      if (true) {
        let x = 20; // ブロック外の変数とは異なる変数
        console.log(x); // 20を出力
      }
      console.log(x); // 内部ブロックの影響を受けず、10を出力
    }

  3. const(定数宣言):
     

    • constで宣言された変数はletのようにブロックスコープを持ちます。
       
    • const変数は宣言時に値を割り当てる必要があり、その値を変更または再代入することはできません。
       
    • letと同様に、const変数は宣言されるまでホイスティングされません。
       
    function variable_declaration() {
      const x = 10;
      // x = 20; // これはエラーになります。const変数は再代入できません
      console.log(x); // 10を出力
    }

 

一般的に、デフォルトでconstを使用し、変数の値が変更されるとわかっている場合にのみletを使用するのが良い習慣です。varは、その関数スコープの動作とホイスティングの癖のために、現代のJavaScriptではあまり頻繁に使用されません。constletを使用すると、意図しない再代入を防ぎ、コードの可読性を向上させることができます。

Tag list:
- js
- let
- variable declaration
- variable declaration differences
- javascript
- const
- var

Subscribe

Subscribe to our newsletter and never miss out lastest news.