19.参照型とオリジナル型


「RunningJavaScript」を見て学んだ内容です。

リファレンスとオリジナル


ААААА
「元」の値は変更されますが、「コピー」の値は変更されません.
let a = 1;             // 원본.
let b = a;             // 사본. b는 1입니다. a가 아닙니다.
a = 2;                 // 원본의 값을 바꿈.
console.log(b)         // 1. 사본의 값은 바뀌지 않음.
また,値自体がコピーされているため,変数と値は一致する.
a === 2                // true
値自体は伝達されるので,変数が関数内の値で変化しても関数外では変化しない.
function change(a) {
  a = 5;
}

a = 3;
change(a);
console.log(a);         // 3
詳細は、次の項を参照してください.
➜元のファイルが変更されると、コピーも変更されます.
ϲこれらのフィーチャーを強調表示する場合は、オブジェクトを参照タイプと呼ぶことができます.
let o = {a: 1};
let p = o;         // 이제 p는 o가 '가리키고 있는 것'을 가리킵니다.
o.a = 2
console.log(p);    // {a: 2}
✔¥注意事項.次のコードは、前の例と似ていますが、結果はまったく異なります.
let o = {a: 1};
let p = o;         // 이제 p는 o가 '가리키고 있는 것'을 가리킵니다.
  p === o          // true
o = {a: 2};        // 이제 o는 다른 것을 가리킵니다. {a: 1}을 수정한 것이 아닙니다.
  p === o          // false
console.log(p)     // {a: 1}
変数(オブジェクトを指す)はオブジェクト自体ではありません.
変数がオブジェクトと一致しません.
let q = {a: 1};
q === {a: 1}              // false
関数でオブジェクトを変更すると、関数の外部でも参照が変更されます.
function change_o(o) {
  o.a = 999;
}

let o = {a: 1};
change_o(o);
console.log(o)     // {a: 999}