Get to know MDN better
このページはコミュニティーの尽力で英語から翻訳されました。MDN Web Docs コミュニティーについてもっと知り、仲間になるにはこちらから。
この機能は広く実装されており、多くのバージョンの端末やブラウザーで動作します。2015年7月以降、すべてのブラウザーで利用可能です。
const 宣言はブロックスコープのローカル変数(定数)を宣言します。定数の値は代入演算子を使用して再代入することができませんが、定数がオブジェクトであった場合、そこにプロパティを追加したり、更新したり、削除したりすることができます。
宣言する変数名。それぞれ、正規の JavaScript 識別子または構造分解バインドパターンでなければなりません。
valueN変数の初期値。正規の式であれば何でもかまいません。
const 宣言は let とよく似ています。
const 宣言は、ブロックおよび関数のスコープになります。
const 宣言は宣言した位置に到達してからでないとアクセスすることができません(一時的デッドゾーンを参照してください)。このため、 const 宣言は一般的に巻き上げされないと見なされます。
スクリプトの最上位で宣言された場合、 const 宣言は globalThis にプロパティを作成しません。
const 宣言は、同じスコープ内の他の宣言によって再宣言することはできません。
const は文ではなく宣言を始めます。つまり、ブロックの本体として単独の const 宣言を使用することはできません(変数にアクセスする手段がないので、理にかなっています)。
定数の初期化子が必要です。同じ宣言の中でその値を指定しなければなりません。(後で変更できませんので、理にかなっています。)
const 宣言は値への不変の参照を作成します。これはその値が不変であるという意味ではなく、変数の識別子に再代入できないという意味です。例えば、内容がオブジェクトの場合、これはオブジェクトの内容(例えばプロパティ)は変更できることを意味しています。const 宣言は「アイデンティティが一定の変数を作成する」のであって、「値が一定の変数を作成する」のではありません。また、「不変のバインド」を作成するのであって、「不変の値」を作成するのではありません。
多くのスタイルガイド(MDN のものも含む)では、変数がそのスコープで再代入されない場合は、 const を let の代わりに使用することを推奨しています。これにより、変数の型(プリミティブの場合は値)が変更されることはないという意図が明確になります。また、プリミティブ以外の変数が変更される場合は let を推奨する人もいます。
const キーワードに続くリストはバインドリストと呼ばれ、カンマで区切られます。このカンマはカンマ演算子ではなく、 = は代入演算子ではありません。後の変数の初期化子は、リスト内の前の変数を参照することができます。
定数は大文字または小文字で宣言することができますが、特にプリミティブの場合は、本当に変更不可能であるので、すべて大文字で宣言するのが慣例です。
ブロックスコープの性質に注意することが重要です。
const はオブジェクトや 配列にも作用します。オブジェクトを上書きしようとすると、"Assignment to constant variable" というエラーが発生します。
しかし、オブジェクトのキーは保護されていないので、次の文は問題なく実行されます。
オブジェクトを不変にするには、 Object.freeze() を使用する必要があります。
配列も同様です。新しい配列を変数に割り当てようとすると、"Assignment to constant variable" のエラーが発生します。
しかし、配列にアイテムを追加することはでき、変更は可能です。
それぞれの = の左辺はバインドパターンにもなります。これにより、一度に複数の変数を作成することができます。
詳しくは、構造分解を参照してください。
| ECMAScript® 2027 Language Specification # sec-let-and-const-declarations |
ブラウザー互換性一覧表を表示するには、JavaScript を有効にしてください。
より良いインターネットのための青写真。
このコンテンツの一部は、©1998–2026 個人の mozilla.org 協力者です。コンテンツはクリエイティブ・コモンズ・ライセンスのもとで利用できます。