TECH I.S.

JavaScript const

constキーワードはES6(2015)で導入されました。 constで定義された変数は再宣言できません。 constで定義された変数は再代入できません。 constで定義された変数はブロックスコープを持ちます。

再代入不可

const変数は再代入できません。

const PI = 3.141592653589793; PI = 3.14;      // これはエラーになります PI = PI + 10;   // これもエラーになります


割り当てる必要があります

JavaScriptのconst変数には、宣言時に値を割り当てる必要があります。

正しい

const PI = 3.14159265359;

間違い

const PI; PI = 3.14159265359;

値を変更してはならないことがわかっている場合は、常に変数をconstで宣言します。

以下を宣言する場合はconstを使用します。

• 新しい配列
• 新しいオブジェクト
• 新しい関数
• 新しい正規表現


定数オブジェクトと配列

constというキーワードは少し誤解を招きます。

定数値を定義するものではありません。値への定数参照を定義します。

このため、次のことはできません。

  • 定数値の再代入
  • 定数配列の再代入
  • 定数オブジェクトの再代入
しかし、次のことはできます。
  • 定数配列の要素を変更する
  • 定数オブジェクトのプロパティを変更する

定数配列

定数配列の要素を変更できます。

// 定数配列を作成できます const cars = ["Saab", "Volvo", "BMW"]; // 要素を変更できます cars[0] = "Toyota"; // 要素を追加できます cars.push("Audi");

ただし、配列を再代入することはできません。

const cars = ["サーブ", "ボルボ", "BMW"]; cars = ["トヨタ", "ボルボ", "アウディ"];    // エラー


定数オブジェクト

定数オブジェクトのプロパティを変更できます。

// 定数オブジェクトを作成できます const car = {type:"フィアット", model:"500", color:"白"}; // プロパティを変更できます car.color = "red"; // プロパティを追加できます car.owner = "Johnson";

ただし、オブジェクトを再代入することはできません。

const car = {type:"フィアット", model:"500", color:"白"}; car = {type:"ボルボ", model:"EX60", color:"red"};    // エラー


ブラウザのサポート

constキーワードはInternet Explorerでは完全にはサポートされていません。

次の表は、constキーワードを完全にサポートする最初のブラウザのバージョンを明示しています。


Chrome 49 Edge 12 Firefox 36 Safari 11 Opera 36
2016年3月 2015年7月 2015年2月 2017年9月 2016年3月


ブロックスコープ

constを使用した変数の宣言は、ブロックスコープに関して言えばletと似ています。

この例では、ブロック内で宣言されたxは、ブロック外で宣言されたxと同じではありません。

const x = 10; // ここではxは10です { const x = 2; // ここではxは2です } // ここではxは10です

ブロック スコープの詳細については、JavaScriptスコープを参照してください。


再宣言

JavaScript var変数の再宣言は、プログラム内のどこでも許可されます。

var x = 2;     // 許されます var x = 3;     // 許されます x = 4;     // 許されます

同じスコープ内で既存のvarまたはlet変数をconstに再宣言することは許可されません。

var x = 2;     // 許されます const x = 2;   // 許されません { let x = 2;     // 許されます const x = 2;   // 許されません } { const x = 2;   // 許されます const x = 2;   // 許されません }
同じスコープ内で既存のconst変数を再代入することは許可されていません。

const x = 2;     // 許されます x = 2;           // 許されません var x = 2;       // 許されません let x = 2;       // 許されません const x = 2;     // 許されません {   const x = 2;   // 許されます   x = 2;         // 許されません   var x = 2;     // 許されません   let x = 2;     // 許されません const x = 2;   // 許されません }

別のスコープまたは別のブロックでconstを使用して変数を再宣言することは許可されます。

const x = 2;       // 許されます {   const x = 3;   // 許されます } {   const x = 4;   // 許されます }

巻き上げ

varで定義された変数は最上位に巻き上げられ、いつでも初期化できます。

意味: 宣言する前でも変数を使用できます。

これははOKです

carName = "ボルボ"; var carName;

ホイスティングについてさらに詳しく知りたい場合は、JavaScript巻き上げの章を参照してください。 constで定義された変数も先頭に巻き上げられますが、初期化されません。

意味: const変数を宣言する前に使用すると、ReferenceErrorが発生します。

alert(carName); const carName = "ボルボ";



プログラミング学習を加速させる

プログラミングをプロの講師に教えてもらいませんか。

テックアイエスのプログラミングスクールは初心者も大歓迎です。年齢制限もありません。転職・副業に強く、挫折させない手厚いサポートで稼ぐ力を身につけましょう!

スクールの詳細