JavaScript原始VRS参照値の理解
これら
data
型をグループ化できますprimitive
and reference
値.このポストでは、我々は
primitive
and reference
JavaScriptの値.データ型の理解
In computer programming, a data type tells the compiler or interpreter what type of value a variable has.
JavaScriptプログラミング言語には7つのデータ型があります.
undefined
null
string
numbers
symbol
boolean
object
primitive
and reference
値(値はvaraibleに格納されるいくつかの種類のデータとして見ることができます).原始データ型
つのプリミティブデータ型があります
undefined
null
string
numbers
symbol
boolean
非原始データ型
Object
考えられるreference
or non-primitive
値.心に留めておきなさいarrays
and functions
に分類されるObjects
データ型または値の格納
JavaScriptエンジンにはデータや値を格納する2つの場所があります
stack
and heap
.プリミティブデータ型には複雑な値がありません.
stack
.しかし、Aのサイズ
reference
値は動的または複雑です.例えば、Object
新しいプロパティを追加することができます.array
を追加することができます要素を追加または削除します.これらの複雑さのために、我々は店
reference
における値heap
. 値の設定
Aを割り当てるとき
value
にvariable
, JavaScriptエンジンは、値がprimitive
or reference
値.これは、変数を格納する場所を決定するのに役立ちます
stack
or heap
.原始値へのアクセス
変数を宣言し、
primitive
変数への値、例let a = 40
. JavaScriptエンジンstack
var x = 10;
上のコードで=
現在値を割り当てるか、保存するでしょう10
その特定の場所で、我々はそれ(すなわちA 001)を割り当てました.10
は、variable
, この変数に格納された**実際の値を使用または操作します.プリミティブ値のコピー
プリミティブ値を別の変数に格納する変数を割り当てるときに何が起こるかを見てみましょう.
When you assign any variable that contains a primitive value to a new variable, the value stored in the initial variable is created and copied to the new variable.
以下の例を見てみましょう
let a = 40;
let b = a; //assign value stored in`a` to `b`.
a
そして、40
. b
に保存し、a
それに.両方の変数の出力をチェックしましょう
console.log(`a =${a} and b = ${b}`)
出力はa =40 and b = 40
変数が宣言されると、メモリ内の場所を割り当て、そこに値を格納します.let a = 40
, 私たちは場所を割り当てました*メモリで、割り当てられた場所*を呼び出してください.我々がAX 001に行くとき、我々は価値にアクセスすることができます40
. b
変数は、メモリ内の場所を作成するので、値を格納します.この場所を呼び出しましょうa
to b
let a = 40;
let b = a; //copies value stored in `a` to `b`
a
bの位置にある.場所bx 001の意味で我々は現在値40
. 初期値の変更
次に、変数に格納した値を変更することを決定します
a
, 変数の値b
チェンジも?a = 50; //change value stored in a
console.log(`a =${a} and b=${b})
出力はa =50 and b =40
に格納された値を変更するa
はb
. ただし、a
に割り当てられたb
なぜ?これが起こっている
values
変数のa
and b
はメモリ内の異なる場所に格納される.40
変数の位置ax001に格納されるa
変数**に格納されますb
場所に保存されます.a
to b
, 彼らは2つの別々の場所に格納されている.a
, 変数の値は変更されませんb
. 要約する
プリミティブ値の概要では、
a
変数b
変数は変わりません.だってa
and b
メモリ内の位置は異なる.非原始値へのアクセス
非原始値は
heap
これは非原始値が複雑なデータ構造を持っているため、膨大なメモリを格納する必要があるためです.変数を定義し、それに非プリミティブデータ型を割り当てるとき.これは次のようなことです.
heap
そして、そのアドレスに* *実際の値を格納しますnon primitive
値g.user = {
firstName: "Emmanuel",
lastName: "Kumah"
}
user
変数の格納はポインタであり、値*が格納され、実際の値ではない** address **を指します.If you looked at the in-memory value of a reference type, you’d see a memory address (or a “reference” to a spot in memory).
user
そして、前方へのヒープに格納された値への場所user
変数stack
私たちがアクセスしているのは、* Reference *または*へのポインタですheap
** When we access a reference value, we manipulate it through reference, not through its actual value that is stored. Thus, variables that are reference values are accessed by reference
コピー参照値
他の変数に参照値を格納する変数を割り当てるとき、初期変数に格納された値も新しい変数の場所にコピーされます.
let user = {
firstName: "emmanuel",
location: "Ghana"
}
let admin = user; //assign variable to new variable
console.log(`admin is ${admin.firstName} and user is ${user.firstName}`);
出力はadmin is emmanuel and user is emmanuel
違いは、両方の変数に格納された値は、ヒープに格納された実際のオブジェクトのアドレスです値の変更
両方の変数は同じオブジェクトを参照しています.意味は、両方の変数から元のオブジェクトを操作することができます
試してみましょう
firstName
プロパティuser
オブジェクトを参照してくださいadmin
オブジェクト.下記のコードを見てください
let user = {
firstName: "emmanuel",
location: "Ghana"
}
let admin = user; // assign user to admin
console.log(`admin is ${admin.firstName} and user is ${user.firstName}`);
admin.firstName = "Stephen"; //change the firstName property
console.log(`admin is ${admin.firstName} and user is ${user.firstName}`);
出力はadmin is emmanuel and user is emmanuel
admin is Stephen and user is Stephen
上から、user
また、admin
オブジェクト.したがって、両方の変数からOrdinalオブジェクトを操作し、1つの変数に1つのプロパティを変更すると、他の変数のプロパティが変更されます.
要約する
この記事では、Varaibleは2つの値型のいずれかを呼び出すことができます.
primitive
値reference
値.ガーナから愛を込めて書かれています
Reference
この問題について(JavaScript原始VRS参照値の理解), 我々は、より多くの情報をここで見つけました https://dev.to/efkumah/understanding-javascript-primitive-vrs-reference-values-4ipjテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol