JavaScriptの配列 Const

ECMAScript 2015 (ES6)

2015年、JavaScriptは重要な新しいキーワードを導入しました:const

使用して const 宣言された配列は一般的な做法です:

const cars = ["Saab", "Volvo", "BMW"];

自分で試してみてください

再割り当てできません

以下のように使用して const 宣言された配列は再割り当てできません:

const cars = ["Saab", "Volvo", "BMW"];
cars = ["Toyota", "Volvo", "Audi"];    // エラー

自分で試してみてください

配列は常量ではありません

キーワード const ある程度の誤解を招きやすいです。

常量配列を定義していません。定義しているのは配列の常量参照です。

したがって、常量配列の要素を変更できます。

要素は再割り当てできます

常量配列の要素を変更できます:

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

自分で試してみてください

ブラウザのサポート

Internet Explorer 10 以降のバージョンではサポートされていません const キーワード。

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

Chrome IE Firefox Safari Opera
Chrome 49 IE 11 / Edge Firefox 36 Safari 10 Opera 36
2016 年 3 月 2013 年 10 月 2015 年 2 月 2016 年 9 月 2016 年 3 月

宣言時の値割り当て

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

これは言い換えれば、 const 宣言された配列は宣言時に初期化する必要があります。

使用して const 配列を初期化しないのは構文エラーです:

効果がありません:

const cars;
cars = ["Saab", "Volvo", "BMW"];

以下のように使用して var 宣言された配列はいつでも初期化できます。

宣言する前に配列を使用することもできます:

問題ありません:

cars = ["Saab", "Volvo", "BMW"];
var cars;

自分で試してみてください

const ブロック作用域

以下のように使用して const 宣言された配列はブロック作用域

ブロック内で宣言された配列とブロック外で宣言された配列は異なります:

const cars = ["Saab", "Volvo", "BMW"];
// ここでは cars[0] は "Saab"
{
  const cars = ["Toyota", "Volvo", "BMW"];
  // ここでは cars[0] は "Toyota"
}
// ここでは cars[0] は "Saab"

自分で試してみてください

以下のように使用して var 宣言された配列はブロック作用域を持っていません:

var cars = ["Saab", "Volvo", "BMW"];
// ここでは cars[0] は "Saab"
{
  var cars = ["Toyota", "Volvo", "BMW"];
  // ここでは cars[0] は "Toyota"
}
// ここでは cars[0] は "Toyota"

自分で試してみてください

ブロック作用域に関する詳細は以下の章で学ぶことができます:JavaScriptのスコープ

配列を再宣言

プログラムのどこでも以下のように配列を再宣言することが許可されています var 配列を再宣言する:

var cars = ["Volvo", "BMW"];   // 許可
var cars = ["Toyota", "BMW"];  // 許可
cars = ["Volvo", "Saab"];      // 許可

同じ作用域または同じブロック内で配列を再宣言または再割り当てすることは許可されていません const

var cars = ["Volvo", "BMW"];         // 許可
const cars = ["Volvo", "BMW"];       // 不允许
{
  var cars = ["Volvo", "BMW"];         // 許可
  const cars = ["Volvo", "BMW"];       // 不允许
}

同じ作用域または同じブロック内で既存の配列を再宣言または再割り当てすることは許可されていません const 配列:

const cars = ["Volvo", "BMW"];       // 允許
const cars = ["Volvo", "BMW"];       // 不允许
var cars = ["Volvo", "BMW"];         // 不許可
cars = ["Volvo", "BMW"];             // 不許可
{
  const cars = ["Volvo", "BMW"];     // 允許
  const cars = ["Volvo", "BMW"];     // 不許可
  var cars = ["Volvo", "BMW"];       // 不許可
  cars = ["Volvo", "BMW"];           // 不許可
}

別のスコープや別のブロックで使用を許可 const 配列を再宣言する:

const cars = ["Volvo", "BMW"];       // 允許
{
  const cars = ["Volvo", "BMW"];     // 允許
}
{
  const cars = ["Volvo", "BMW"];     // 允許
}

完全な配列リファレンス マニュアル

完全なリファレンスが必要な場合は、私たちの完全な JavaScript 配列リファレンス マニュアル

このマニュアルにはすべての配列属性とメソッドの説明と例が含まれています。