JavaScriptConst _
このconst
キーワードは
ES6(2015)で導入されました。
で定義された変数const
は再宣言できません。
で定義された変数const
は再割り当てできません。
で定義された変数にconst
はブロックスコープがあります。
再割り当てできません
変数を再割り当てするconst
ことはできません。
例
const PI = 3.141592653589793;
PI = 3.14; // This will give an error
PI = PI + 10; // This will also give an error
割り当てる必要があります
JavaScriptconst
変数には、宣言時に値を割り当てる必要があります。
正しい
const PI = 3.14159265359;
正しくない
const PI;
PI = 3.14159265359;
JavaScript constをいつ使用するのですか?
原則として、const
値が変更されることがわかっている場合を除いて、常に変数を宣言します。
const
宣言するときに使用します。
- 新しいアレイ
- 新しいオブジェクト
- 新機能
- 新しい正規表現
定数オブジェクトと配列
キーワードconst
は少し誤解を招くです。
定数値を定義するものではありません。値への定数参照を定義します。
このため、次のことはできません。
- 定数値を再割り当てします
- 定数配列を再割り当てします
- 定数オブジェクトを再割り当てします
- 定数配列の要素を変更します
- 定数オブジェクトのプロパティを変更する
でも君ならできる:
定数配列
定数配列の要素を変更できます。
例
// You can create a constant array:
const cars = ["Saab", "Volvo", "BMW"];
// You can change an element:
cars[0] = "Toyota";
// You can add an element:
cars.push("Audi");
ただし、アレイを再割り当てすることはできません。
例
const cars = ["Saab", "Volvo", "BMW"];
cars = ["Toyota", "Volvo", "Audi"]; // ERROR
定数オブジェクト
定数オブジェクトのプロパティを変更できます。
例
// You can create a const object:
const car = {type:"Fiat", model:"500", color:"white"};
// You can change a property:
car.color = "red";
// You can add a property:
car.owner = "Johnson";
ただし、オブジェクトを再割り当てすることはできません。
例
const car = {type:"Fiat", model:"500", color:"white"};
car = {type:"Volvo", model:"EX60", color:"red"}; //
ERROR
ブラウザのサポート
このconst
キーワードは、Internet Explorer10以前ではサポートされていません。
const
次の表は、キーワードを完全にサポートする最初のブラウザバージョンを定義しています。
Chrome 49 | IE 11 / Edge | Firefox 36 | Safari 10 | Opera 36 |
Mar, 2016 | Oct, 2013 | Feb, 2015 | Sep, 2016 | Mar, 2016 |
ブロックスコープ
で変数を宣言する
ことは、ブロックスコープconst
に関しては同様です。let
この例では、ブロック内で宣言されたxは、ブロック外で宣言されたxと同じではありません。
例
const x = 10;
// Here x is 10
{
const x = 2;
// Here x is 2
}
// Here x is 10
ブロックスコープの詳細については、 JavaScriptスコープの章をご覧ください。
再宣言
JavaScriptvar
変数の再宣言は、プログラムのどこでも許可されています。
例
var x = 2; // Allowed
var x = 3; // Allowed
x = 4; // Allowed
同じスコープ内で、既存var
またはlet
変数をに再宣言するconst
ことは許可されていません。
例
var x = 2; // Allowed
const x = 2; // Not allowed
{
let x = 2; // Allowed
const x = 2; // Not allowed
}
{
const x = 2; // Allowed
const x = 2; // Not allowed
}
同じスコープ内の既存のconst
変数を再割り当てすることは許可されていません。
例
const x = 2; // Allowed
x = 2; // Not allowed
var x = 2; // Not allowed
let x = 2; // Not allowed
const x = 2; // Not allowed
{
const x = 2; // Allowed
x = 2;
// Not allowed
var x = 2;
// Not allowed
let x = 2;
// Not allowed
const x = 2; // Not allowed
}
const
別のスコープまたは別のブロックで、変数を再宣言できます。
例
const x = 2; // Allowed
{
const x = 3; // Allowed
}
{
const x = 4; // Allowed
}
コンストホイスト
で定義された変数は一番上var
に持ち上げられ、いつでも初期化できます。
意味:宣言する前に変数を使用できます。
例
これで結構です:
carName = "Volvo";
var carName;
巻き上げについて詳しく知りたい場合は、JavaScriptの巻き上げの章をご覧ください。
で定義された変数const
も上に上げられますが、初期化されません。
意味:const
宣言される前に変数を使用すると、次のようになります
ReferenceError
。
例
alert (carName);
const carName = "Volvo";