ホームページ ウェブフロントエンド フロントエンドQ&A es6 で読み取り専用定数を宣言する方法

es6 で読み取り専用定数を宣言する方法

Jan 11, 2023 pm 05:38 PM
es6 絶え間ない

es6 では、const キーワードを使用して読み取り専用定数を宣言できます。構文は「const 定数名 = 定数値;」です。宣言後は定数を初期化する必要があり、初期化された値は変更できません。 const によって宣言された定数はブロック スコープに属し、「一時的なデッド ゾーン」の対象となり、ウィンドウ上にグローバル プロパティは作成されず、再割り当てや再宣言はできません。

es6 で読み取り専用定数を宣言する方法

このチュートリアルの動作環境: Windows 7 システム、ECMAScript バージョン 6、Dell G3 コンピューター。

es6 では、const キーワードを使用して読み取り専用定数を宣言できます。

es6 const キーワード

const は読み取り専用の定数を宣言します。宣言した定数は初期化する必要があり、初期化された値は変更できません。

const PI = 3.1415;
PI // 3.1415

PI = 3;
// TypeError: Assignment to constant variable.
ログイン後にコピー

const 定数は次の規則に従います:

  • はブロック スコープに属します。

  • は「一時的なデッドゾーン」の対象となります。

  • ウィンドウ上にグローバル プロパティは作成されません。

  • 再割り当てはできません。

  • 再宣言することはできません。

const 変数を宣言したら、すぐに初期化する必要があります。

const foo;
// SyntaxError: Missing initializer in const declaration
ログイン後にコピー

上記のコードは、const の場合、値を割り当てずに宣言しただけの場合、エラーが報告されることを示しています。

const のスコープは let コマンドのスコープと同じです。const が宣言されているブロックレベルのスコープ内でのみ有効です。

if (true) {
  const MAX = 5;
}

MAX // Uncaught ReferenceError: MAX is not defined
ログイン後にコピー

const コマンドで宣言された定数は昇格されません。一時的なデッド ゾーンもあり、宣言された位置の後でのみ使用できます。

if (true) {
  console.log(MAX); // ReferenceError
  const MAX = 5;
}
ログイン後にコピー

上記のコードは、定数 MAX が宣言される前に呼び出され、エラーが報告されます。

const で宣言した定数は let のように繰り返し宣言することはできません。

var message = "Hello!";
let age = 25;

// 以下两行都会报错
const message = "Goodbye!";
const age = 30;
ログイン後にコピー

const の本質

const が実際に保証しているのは、変数の値が変更できないことではなく、メモリ アドレスに格納されているデータがポイントしていることです。変数によって変更することはできません。単純なタイプのデータ (数値、文字列、ブール値) の場合、値は変数が指すメモリ アドレスに格納されるため、定数と同等です。しかし、複合型データ (主にオブジェクトと配列) の場合、変数が指すメモリ アドレスには実際のデータへのポインタが格納されるだけであり、const はこのポインタが固定されていること (つまり、常に別の固定アドレスを指していること) のみを保証できます。 、それが指すデータ構造が可変であるかどうかについては、完全に制御不能です。したがって、オブジェクトを定数として宣言するときは細心の注意を払う必要があります。

const foo = {};

// 为 foo 添加一个属性,可以成功
foo.prop = 123;
foo.prop // 123

// 将 foo 指向另一个对象,就会报错
foo = {}; // TypeError: "foo" is read-only
ログイン後にコピー

上記のコードでは、定数 foo はオブジェクトを指すアドレスを格納します。不変なのはこのアドレスのみです。つまり、foo が別のアドレスを指すことはできませんが、オブジェクト自体は変更可能であるため、新しいプロパティをオブジェクトに追加することはできます。

これは別の例です。

const a = [];
a.push('Hello'); // 可执行
a.length = 0;    // 可执行
a = ['Dave'];    // 报错
ログイン後にコピー

上記のコードでは、定数 a は配列です。配列自体は書き込み可能ですが、別の配列を a に代入するとエラーが報告されます。

本当にオブジェクトをフリーズしたい場合は、Object.freeze メソッドを使用する必要があります。

const foo = Object.freeze({});

// 常规模式时,下面一行不起作用;
// 严格模式时,该行会报错
foo.prop = 123;
ログイン後にコピー

上記のコードでは、定数 foo は凍結されたオブジェクトを指しているため、新しい属性の追加は機能せず、厳密モードではエラーが報告されます。

オブジェクト自体をフリーズするだけでなく、オブジェクトのプロパティもフリーズする必要があります。以下はオブジェクトを完全にフリーズする関数です。

var constantize = (obj) => {
  Object.freeze(obj);
  Object.keys(obj).forEach( (key, i) => {
    if ( typeof obj[key] === 'object' ) {
      constantize( obj[key] );
    }
  });
};
ログイン後にコピー

【関連する推奨事項: JavaScript ビデオ チュートリアル プログラミング ビデオ ]

以上がes6 で読み取り専用定数を宣言する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C 言語の定数とは何ですか?例を挙げていただけますか? C 言語の定数とは何ですか?例を挙げていただけますか? Aug 28, 2023 pm 10:45 PM

定数は変数とも呼ばれ、一度定義されると、その値はプログラムの実行中に変更されません。したがって、変数を固定値を参照する定数として宣言できます。テキストとも呼ばれます。定数は、Const キーワードを使用して定義する必要があります。構文 C プログラミング言語で使用される定数の構文は次のとおりです - consttypeVariableName; (または) consttype*VariableName; さまざまなタイプの定数 C プログラミング言語で使用されるさまざまなタイプの定数は次のとおりです: 整数定数 - 例: 1,0 、34、4567 浮動小数点定数 - 例: 0.0、156.89、23.456 8 進数および 16 進数の定数 - 例: 16 進数: 0x2a、0xaa.. 8 進数

Pythonで定数を作成するにはどうすればよいですか? Pythonで定数を作成するにはどうすればよいですか? Aug 29, 2023 pm 05:17 PM

定数と変数は、プログラミングでデータ値を保存するために使用されます。変数は通常、時間の経過とともに変化する値を指します。定数は、プログラムの実行中に値を変更できない変数の一種です。 Python で使用できる組み込み定数は 6 つだけです。False、True、None、NotImplemented、Ellipsis(...)、__debug__ です。これらの定数とは別に、Python には定数値を格納するための組み込みデータ型がありません。例 定数の例を以下に示します。False=100 が出力されます。 SyntaxError:cannotassigntoFalseFalse は、ブール値を格納するために使用される Python の組み込み定数です。

非同期は es6 または es7 用ですか? 非同期は es6 または es7 用ですか? Jan 29, 2023 pm 05:36 PM

非同期はes7です。 async と await は ES7 に新しく追加されたもので、非同期操作のソリューションです。async/await は co モジュールとジェネレーター関数の糖衣構文と言え、より明確なセマンティクスで JS 非同期コードを解決します。名前が示すように、async は「非同期」を意味します。async は関数が非同期であることを宣言するために使用されます。async と await の間には厳密な規則があります。両方を互いに分離することはできず、await は async 関数内でのみ記述できます。

Java では、final キーワードのみを使用して定数を定義できますか? Java では、final キーワードのみを使用して定数を定義できますか? Sep 20, 2023 pm 04:17 PM

定数変数とは、値が固定されており、プログラム内に 1 つだけ存在する変数です。定数変数を宣言して値を代入すると、プログラム全体でその値を再度変更することはできません。他の言語とは異なり、Java は定数を直接サポートしません。ただし、変数を static および Final として宣言することで、定数を作成することはできます。静的 - 静的変数を宣言すると、それらはコンパイル時にメモリにロードされます。つまり、使用できるコピーは 1 つだけになります。 Final - Final 変数を宣言すると、その値は変更できなくなります。したがって、インスタンス変数を static かつ Final として宣言することで、Java で定数を作成できます。デモの例 classData{&am

es6 の 2 つの配列で異なる項目を見つける方法 es6 の 2 つの配列で異なる項目を見つける方法 Nov 01, 2022 pm 06:07 PM

手順: 1. 構文 "newA=new Set(a); newB=new Set(b);" を使用して、2 つの配列をそれぞれセット型に変換します; 2. has() と filter() を使用して差分セットを検索します、構文 " new Set([...newA].filter(x =>!newB.has(x)))" では、差分セット要素がセット コレクションに含まれて返されます。 3. 配列を使用します。 from セットを配列に変換するタイプ、構文は「Array.from(collection)」です。

ミニ プログラムで es6 を es5 に変換する必要があるのはなぜですか? ミニ プログラムで es6 を es5 に変換する必要があるのはなぜですか? Nov 21, 2022 pm 06:15 PM

ブラウザの互換性のため。 ES6 は JS の新しい仕様として、多くの新しい構文と API を追加していますが、最新のブラウザーは ES6 の新機能を高度にサポートしていないため、ES6 コードを ES5 コードに変換する必要があります。 WeChat Web 開発者ツールでは、デフォルトで babel が使用され、開発者の ES6 構文コードを 3 つの端末すべてで適切にサポートされる ES5 コードに変換し、開発者がさまざまな環境によって引き起こされる開発上の問題を解決できるようにします。プロジェクト内でのみ設定して確認するだけです。 「ES6~ES5」オプション。

es6 の一時的なデッドゾーンとは何を意味しますか? es6 の一時的なデッドゾーンとは何を意味しますか? Jan 03, 2023 pm 03:56 PM

es6 では、一時的なデッド ゾーンは構文エラーであり、ブロックを閉じたスコープにする let および const コマンドを指します。コード ブロック内では、let/const コマンドを使用して変数が宣言される前に、変数は使用できず、変数が宣言される前は変数の「デッド ゾーン」に属します。これは構文上「一時デッド ゾーン」と呼ばれます。 ES6 では、一時的なデッド ゾーンや let ステートメントや const ステートメントでは変数のプロモーションが発生しないことを規定しています。これは主に実行時エラーを減らし、変数が宣言される前に使用されて予期しない動作が発生するのを防ぐためです。

es6 マップは注文されていますか? es6 マップは注文されていますか? Nov 03, 2022 pm 07:05 PM

地図は注文済みです。 ES6 のマップ タイプは、多くのキーと値のペアを格納する順序付きリストです。キー名と対応する値はすべてのデータ型をサポートします。キー名の等価性は、「Objext.is()」メソッドを呼び出すことによって決定されます。 , したがって、数字の 5 と文字列「5」は 2 つのタイプとして判断され、プログラム内で 2 つの独立したキーとして現れることができます。

See all articles