ア | イ | ウ | エ | オ |
カ | キ | ク | ケ | コ |
サ | シ | ス | セ | ソ |
タ | チ | ツ | テ | ト |
ナ | ニ | ヌ | ネ | ノ |
ハ | ヒ | フ | ヘ | ホ |
マ | ミ | ム | メ | モ |
ヤ | ユ | ヨ | ||
ラ | リ | ル | レ | ロ |
ワ | ヰ | ヴ | ヱ | ヲ |
ン |
A | B | C | D | E |
F | G | H | I | J |
K | L | M | N | O |
P | Q | R | S | T |
U | V | W | X | Y |
Z | 数字 | 記号 |
JavaScriptに3種類ある変数・定数宣言のうちの一つで、ブロックスコープの定数を宣言する。ECMAScript 2015 (ES6)から追加された。
「定数」を定義するために使う、一般的な宣言である。
但し実際には、読み取り専用の値を生成するためのもので、不変の値を保証するものではない。これはJavaScriptに限らず、他のプログラミング言語でも共通の認識である。
const name1 = value1 [, name2 = value2 [, ... [, nameN = valueN]]];
カンマで区切って1行に複数の変数を宣言できる。また、それぞれで初期値の定義が必須である。
constは英語のconstantの略で、意味は「定数」や「不変」である。
但し、JavaScriptの言語仕様として不変を保証するのは、再代入による変更ができず、再宣言もできないことだけで、「その内容」が変化しないことまでは保証していない。特に配列などのオブジェクトは内容が変化しうるので、constだからといって油断すると予期しないバグを招く。
const arr1 = ['AAA', 'BBB', 'CCC'];
const arr2 = arr1;
この時、実はarr1とarr2は同じオブジェクトを指している。またconstの配列も操作は可能である。結果、arr2に追加や削除をするとarr1も変化する。
arr2.pop();
console.log(arr1); // 出力は ['AAA', 'BBB'] となる
console.log(arr2); // 出力は ['AAA', 'BBB'] となる
こういった、変化しない配列をconstで持っておきたい時は、次のように concat() を使うと複製を作ることができる。
const arr1 = ['AAA', 'BBB', 'CCC'];
const arr2 = arr1.concat();
arr2.pop();
console.log(arr1); // 出力は ['AAA', 'BBB', 'CCC'] となる
console.log(arr2); // 出力は ['AAA', 'BBB'] となる
ECMAScript 2015 (ES6)策定の何年も前から、Mozilla FirefoxのJavaScriptエンジンSpiderMonkeyにはletとともにconstのサポートがあったことが知られる。しかしこのconstはvarと同様にグローバルスコープだった。
Mozilla Firefoxでも、ECMAScript 2015 (ES6)準拠のためにFirefox 44以降ではブロックスコープとなるよう仕様変更されている。
コメントなどを投稿するフォームは、日本語対応時のみ表示されます