元の値とオブジェクトの比較
6065 ワード
元の値
不変値
文字列と不変性
値による転送
var score = 80;
// 원시 값 80이 복사되어 copy에 할당된다.
var copy = score;
console.log(score); // 80
console.log(copy); // 80
score = 100;
console.log(score); // 100
console.log(copy); // 80
scoreとcopyの値は80ですが、異なるメモリ領域に格納されている別の値です.したがって、scoreの値を変更してもcopyには影響しません.
実際、変数は値ではなくメモリアドレスを伝達するので、「値による伝達」は正しく表示されません.重要なのは、2つの変数の元の値が最終的に異なるメモリ領域に格納されるため、いずれの再割り当ても相互に干渉できないことです.
オブジェクト
可変値
これらの構造的な欠点を補うために、メモリの使用効率とパフォーマンスを向上させるために、オブジェクトは変更可能な値に設計されています.ただし、元の値とは異なり、複数の識別子が1つのオブジェクトの副作用を共有できるようになります.
浅い放射と深い放射
const o = { x: { y: 1 } };
// 얕은 복사
const c1 = { ...o };
console.log(c1 === o); // false (복사로 생성된 객체는 원본과 다른 객체다.)
console.log(c1.x === o.x); // true (참조값이 복사되어 같은 객체를 가리키므로)
// lodash 의 cloneDeep 을 사용한 깊은 복사
const _ = require('lodash');
const c2 = _.cloneDeep(o);
console.log(c2 === o); // false
console.log(c2.x === o.x); // false (중첩 객체가 새로운 메모리 공간에 복사되므로)
リファレンス転送
var person = {
name: 'Lee'
};
// 참조 값 복사 (얕은 복사)
var copy = person;
personとcopyは同じ参照値を持つため、同じオブジェクトを指します.すなわち、2つの識別子は1つのオブジェクトを共有する.したがって、両方の一方がオブジェクトを変更すると、相互に影響します.Reference
この問題について(元の値とオブジェクトの比較), 我々は、より多くの情報をここで見つけました https://velog.io/@cheej10/원시-값과-객체의-비교テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol