ホームページ  >  記事  >  バックエンド開発  >  ECMAScript のプリミティブ値と引用符で囲まれた値 - JavaScript ING

ECMAScript のプリミティブ値と引用符で囲まれた値 - JavaScript ING

不言
不言オリジナル
2018-03-30 12:44:351852ブラウズ

この記事では主に ECMAScript のプリミティブ値と参照値に関する知識を共有します。必要な方は参考にしてください

1. ECMAScript では、変数は 2 つに存在できます。タイプ の値、つまり

元の値
参照値1.1 プリミティブ値

(1) プリミティブ値とは、Number、Stirng、Boolean、Null、Underfined などの

基本型

とも呼ばれる元の型の値を指します。 (2)

スタック

に保存される単純なデータセグメント。つまり、その値は、変数によってアクセスされる場所に直接保存されます。 (3) 注

多くの言語では、文字列の長さが可変であるため、文字列はプリミティブ型ではなく参照型として扱われます。 ECMAScript はこの伝統を打ち破ります。

1.2 参照値

(1) 参照値とは、オブジェクト、関数、配列、日付、正規表現などの

参照型

の値を指します。 (2)

ヒープ

に格納されているオブジェクト、つまり、変数に格納されている値はポインタ(ポイント)であり、オブジェクトが格納されているメモリを指します。 2. スタックとヒープ

2.1 プリミティブ値はスタックに格納されます

変数に値を割り当てるとき、ECMAScript インタープリターは値がプリミティブ型であるか参照型であるかを判断する必要があります。これを行うために、インタープリターは、値が ECMAScript の

プリミティブ型

、つまり、未定義、Null、ブール、数値、文字列のいずれかであるかどうかを判断しようとします。これらのプリミティブ型は固定スペース を占有するため、より小さいメモリ領域、つまり スタック に保存できます。このストレージにより、変数の値をすばやく簡単に検索できるようになります。 2.2 参照値はヒープに格納されます

値が

参照型

の場合、その記憶領域は

ヒープから割り当てられます。参照値のサイズは変化するため、スタックに置くことができず、変数の検索速度が低下します。代わりに、変数のスタック領域に配置される値は、オブジェクトがヒープ内に格納されるアドレスになります。アドレスのサイズは固定されているため、スタックに格納しても変数のパフォーマンスに悪影響を与えることはありません。 2.3 図解

3. 元の値と基準値の違いECMAScript のプリミティブ値と引用符で囲まれた値 - JavaScript ING3.1 代入方法

3.2 値が変数であるかどうか

3.3 異なる比較方法

4.は変数です

4.1 元の値は

値のコピー

として代入され、その値は

不変

です。 4.2 参照のcopyという方法で参照値を代入し、その値を

変数

とします。 4.3 例

4.4 説明ECMAScript のプリミティブ値と引用符で囲まれた値 - JavaScript ING (1) 元の値の代入 → 実際には、値をコピーして新しい変数に代入します。この値は

コピー

であり、同じです。互いに独立して、1 つの値を変更しても他の値には影響しません。

(2) 参照値の代入 → オブジェクトなどの参照型が = を使用して別の変数に代入する場合、実際にはそのオブジェクトのアドレス参照が新しい変数に代入されます。 同じ アドレス参照に、同じアドレスを持ちます。したがって、変数の 1 つ (アドレス参照が指すオブジェクト) を変更すると、もう 1 つの変数 (アドレス参照が同じオブジェクトを指す) も変更されます。

4.5 拡張

ECMAScript のプリミティブ値と引用符で囲まれた値 - JavaScript ING

5. 異なる比較方法

5.1 元の値の比較は値の比較ですECMAScript のプリミティブ値と引用符で囲まれた値 - JavaScript ING5.2 基準値の比較は引用

5.3の比較例

5.4説明

(1)元の値aとbはデータ型が異なりますが、値を比較することもできます。 (値の比較の前に

データ型の暗黙的な変換が自動的に行われます

)ECMAScript のプリミティブ値と引用符で囲まれた値 - JavaScript ING

== → 値のみ比較

=== → 値だけでなくデータ型も比較

  • (2 ) 参照値 obj1 と obj2 はそれぞれ、ヒープ メモリに格納されている 2 つの

    異なるオブジェクト

    を参照しているため、obj1 と obj2 の値 (アドレス参照) は異なります。
  • もっと読む

1. 元の値と参照値の概念

ECMAScript では、変数は元の値参照値の 2 種類の値を持つことができます。

1.1 プリミティブ値


(1) プリミティブ値とは、Number、Stirng、Boolean、Null、Underfined など、基本型とも呼ばれる元の型の値を指します。

(2) スタックに保存される単純なデータセグメント。つまり、その値は、変数によってアクセスされる場所に直接保存されます。

(3) 注

多くの言語では、文字列の長さが可変であるため、文字列はプリミティブ型ではなく参照型として扱われます。 ECMAScript はこの伝統を打ち破ります。

1.2 参照値

(1) 参照値とは、オブジェクト、関数、配列、日付、正規表現などの参照型の値を指します。

(2) ヒープに格納されているオブジェクト、つまり、変数に格納されている値はポインタ(ポイント)であり、オブジェクトが格納されているメモリを指します。

2. スタックとヒープ

2.1 プリミティブ値はスタックに格納されます

変数に値を割り当てるとき、ECMAScript インタープリターは値がプリミティブ型であるか参照型であるかを判断する必要があります。これを行うために、インタープリターは、値が ECMAScript のプリミティブ型、つまり、未定義、Null、ブール、数値、文字列のいずれかであるかどうかを判断しようとします。これらのプリミティブ型は固定スペース を占有するため、より小さいメモリ領域、つまり スタック に保存できます。このストレージにより、変数の値をすばやく簡単に検索できるようになります。

2.2 参照値はヒープに格納されます

値が

参照型の場合、その記憶領域はヒープから割り当てられます。参照値のサイズは変化するため、スタックに置くことができず、変数の検索速度が低下します。代わりに、変数のスタック領域に配置される値は、オブジェクトがヒープ内に格納されるアドレスになります。アドレスのサイズは固定されているため、スタックに格納しても変数のパフォーマンスに悪影響を与えることはありません。

2.3 図解

ECMAScript のプリミティブ値と引用符で囲まれた値 - JavaScript ING3. 元の値と基準値の違い

3.1 代入方法

3.2 値が変数であるかどうか

3.3 異なる比較方法

4.は変数です

4.1 元の値は

値のコピー

として代入され、その値は不変です。 4.2

参照のcopy

という方法で参照値を代入し、その値を変数とします。 4.3 例

ECMAScript のプリミティブ値と引用符で囲まれた値 - JavaScript ING4.4 説明

(1) 元の値の代入 → 実際には、値

をコピーして新しい変数に代入します。この値は

コピー

であり、同じです。互いに独立して、1 つの値を変更しても他の値には影響しません。 (2) 参照値の代入 → オブジェクトなどの参照型が = を使用して別の変数に代入する場合、実際にはそのオブジェクトのアドレス参照が新しい変数に代入されます。

同じ

アドレス参照に、同じアドレスを持ちます。したがって、変数の 1 つ (アドレス参照が指すオブジェクト) を変更すると、もう 1 つの変数 (アドレス参照が同じオブジェクトを指す) も変更されます。

4.5 拡張ECMAScript のプリミティブ値と引用符で囲まれた値 - JavaScript ING

5. 異なる比較方法ECMAScript のプリミティブ値と引用符で囲まれた値 - JavaScript ING5.1 元の値の比較は値の比較です

5.2 基準値の比較は

引用

5.3の比較例

5.4説明

(1)元の値aとbはデータ型が異なりますが、値を比較することもできます。 (値の比較の前にデータ型の暗黙的な変換が自動的に行われますECMAScript のプリミティブ値と引用符で囲まれた値 - JavaScript ING)

== → 値のみ比較

=== → 値だけでなくデータ型も比較
  • (2 ) 参照値 obj1 と obj2 はそれぞれ、ヒープ メモリに格納されている 2 つの
  • 異なるオブジェクト
  • を参照しているため、obj1 と obj2 の値 (アドレス参照) は異なります。

    関連する推奨事項:

ECMAScript6 変数の構造化代入の詳細な説明

JavaScript と ECMAScript の違い

ECMAScript6 を始めるための Class オブジェクトの例の詳細な説明


以上がECMAScript のプリミティブ値と引用符で囲まれた値 - JavaScript INGの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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