const (JavaScript) |
辞書:電算用語の基礎知識 プログラミング仕様編 (PTPROGS) |
読み:コンスト |
外語:const |
品詞:名詞 |
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'] となる
Firefoxでの実装 |
ECMAScript 2015 (ES6)策定の何年も前から、Mozilla FirefoxのJavaScriptエンジンSpiderMonkeyにはletとともにconstのサポートがあったことが知られる。しかしこのconstはvarと同様にグローバルスコープだった。
Mozilla Firefoxでも、ECMAScript 2015 (ES6)準拠のためにFirefox 44以降ではブロックスコープとなるよう仕様変更されている。
リンク |
通信用語の基礎知識検索システム WDIC Explorer Ver 7.04a (27-May-2022) Search System : Copyright © Mirai corporation Dictionary : Copyright © WDIC Creators club |