[メモ] JavaScript 参照
コメントにてツッコミをいただきましたので、併せてご確認頂けると幸いです
変数a
を定義し、1を入れた時
それぞれメモリ空間上に配置される
let a = 1;
aは1への参照(住所みたいなイメージ、メモリ空間上のアドレス)を保持している
変数b
に変数a
をコピーした時
let a = 1;
let b = a;
値の1がコピーされ、その参照を持つ変数bが作られる
それぞれ別の参照先なので、変数bに再代入しても、変数aは影響を受けない
参照先が張り替えられるだけ
let a = 1;
let b = a;
b = 2;
console.log(a,b); // 1 2
オブジェクト
def.js
let user = {
name: '山田'
};
let user = {
name: '山田'
};
上記のようなオブジェクトが定義されている時
変数user
は「オブジェクトへの参照」は対して参照をもつ
「オブジェクトへの参照」というのは、オブジェクトのプロパティなどを示すアドレス
このオブジェクトをコピーします
let user = {
name: '山田'
};
let secondUser = user;
ここでコピーされるものは「オブジェクトへの参照」です
「オブジェクトへの参照」への参照をコピーし、変数secondUser
はそれへの参照を持ちます
なので、オブジェクトの参照はそのまま残っているので、書き換えると両方変わります
let user = {
name: '山田'
};
let secondUser = user;
secondUser.name = '田中';
console.log(user.name, secondUser.name); // 田中 田中
See the Pen Object Reference by natusme (@natsume0718) on CodePen.
これは、メソッドの引数の時も同様の挙動となる
参考
【JS】初級者から中級者になるためのJavaScriptメカニズム の 参照とコピー
Author And Source
この問題について([メモ] JavaScript 参照), 我々は、より多くの情報をここで見つけました https://qiita.com/ntm718/items/f26dfc834e7914cf37ff著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .