JS-元の値と参照値
5314 ワード
学べば学ぶほど基礎JavaScriptの重要性を感じます.そこで学習内容を整理するために、このシリーズを始めました.
全ての内容を知って整理すれば良いのですが、勉強や必要だと思うことを中心に整理していきます.
本文
元のタイプ:string、number、boolean、null、undefined、symbol オブジェクトタイプ:Array、Object、Function 元のタイプの値は変更できない値です.生成された元のタイプでは、値を読み取り専用に変更できません. 元の値が変数に割り当てられると、変数は実際の値を格納します.
元の値を割り当てる変数は、元の値自体を値とします.
ここで変更できない値は、変数を再割り当てできないことを意味しません.
これは、メモリの値が変更されないことを意味します.
次のコードとメモリマップ
これは理解を助けるための絵です.
上記の図に示すように、格納1の元の値自体は変更されません.
20を新しいメモリ領域に保持し、numberに再割り当てします.
これは、上記の変更不可能な値を意味します.
参照値は変更可能な値です. 参照値が変数に割り当てられると、その変数は参照値を格納します.
参照値を指定する変数は、格納されたオブジェクトのメモリ領域にアドレスを割り当てます.この値を参照値と呼びます.
例と画像を見てみましょう
上図に示すようにstudent変数は
また、再割り当てを必要とせずにオブジェクトに直接アクセスし、Propertyを動的に追加、更新、削除します.
これが変更可能な値の意味です.
元のタイプと参照タイプは、値をコピーするときにも大きく異なります.
元のタイプの値がコピーされ、渡されます.これを値別転送と呼びます.
下図に示すように、
したがって、
参照タイプは、実際の値ではなく参照値を渡します.すなわち、参照値が格納されているメモリアドレスが渡される.
2つの変数は、
したがって、
参照タイプが非値の参照値(メモリアドレス)を持つため、2つの変数のメモリアドレスが異なるため、
reactの参照値と元の値が不明なため、reactを使用した経験があるので、以下に整理します.
リファレンス
モダンJavaScript Deep Dive
https://poiemaweb.com/js-object#5-pass-by-value
https://feel5ny.github.io/2017/11/29/JS_01/
全ての内容を知って整理すれば良いのですが、勉強や必要だと思うことを中心に整理していきます.
本文
JavaScriptのデータ型は大きく2つに分けられます.
元の値とは?
可変値の意味
元の値を割り当てる変数は、元の値自体を値とします.
ここで変更できない値は、変数を再割り当てできないことを意味しません.
これは、メモリの値が変更されないことを意味します.
次のコードとメモリマップ
let number = 1;
number = 20;
numberという変数に1を割り当て,20を再割り当てした.これは理解を助けるための絵です.
上記の図に示すように、格納1の元の値自体は変更されません.
20を新しいメモリ領域に保持し、numberに再割り当てします.
これは、上記の変更不可能な値を意味します.
参照値とは?
変更可能な値の意味
参照値を指定する変数は、格納されたオブジェクトのメモリ領域にアドレスを割り当てます.この値を参照値と呼びます.
例と画像を見てみましょう
var student ={
name:'Heo'
}
student.name = 'lee'
上図に示すようにstudent変数は
객체의 주소
値を格納する.また、再割り当てを必要とせずにオブジェクトに直接アクセスし、Propertyを動的に追加、更新、削除します.
これが変更可能な値の意味です.
値のコピー
元のタイプと参照タイプは、値をコピーするときにも大きく異なります.
値別転送(pass by value)
元のタイプの値がコピーされ、渡されます.これを値別転送と呼びます.
下図に示すように、
copy
にnumber
が割り当てられ、値1がコピーされて渡されます.number
およびcopy
の値1は、異なるメモリ領域に格納される.var number = 1;
var copy = number;
number === copy // true
number = 10;
number === copy //false
number
とcopy
の値は同じですが、異なるメモリに割り当てられます.したがって、
number
の値を変更してもcopy
には影響しません.リファレンスによる転送(リファレンスによる)
参照タイプは、実際の値ではなく参照値を渡します.すなわち、参照値が格納されているメモリアドレスが渡される.
var number = {
val:10
}
var copy = number;
number.val === copy.val // true
number.val = 20
number.val === copy.val //true
copy
は、ゲストnumber
を複製する.2つの変数は、
{val:10}
オブジェクトを格納するメモリアドレスを共有する.したがって、
number.val
を変更すると、copy.val
の値も変化します.var number1 = {val:1}
var number2 = {val:1}
number1 === number2 // false
上記の例number1
とnumber2
は同じ内容のオブジェクトであるが、比較演算するとfalse
となる.参照タイプが非値の参照値(メモリアドレス)を持つため、2つの変数のメモリアドレスが異なるため、
false
が生成されるreactの参照値と元の値が不明なため、reactを使用した経験があるので、以下に整理します.
リファレンス
モダンJavaScript Deep Dive
https://poiemaweb.com/js-object#5-pass-by-value
https://feel5ny.github.io/2017/11/29/JS_01/
Reference
この問題について(JS-元の値と参照値), 我々は、より多くの情報をここで見つけました https://velog.io/@dnjsdud2257/JS-원시-값과-참조-값テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol