学習ノート--JSにおける変数の割当値(連続割当値)
3119 ワード
基本型変数と参照型変数基本データタイプ:Number、String、Boolean、Null、Udefindは変数の実際値を保存します.参照データの種類:
連続して賦課する
コードは以下の通りです
2、メモリに新しいオブジェクトを作成します.{n:2}
3、a={n:2}を実行して、aの参照を、{n:1}から新しい{n:2}を指すように変更します.
4、a.x=aを実行して、この時aはすでに新しい対象を指して、a.xは実行前にもとの引用を保留したため、a.xのaは依然としてもとの{n:1}オブジェクトを指して、元の対象に属性xを追加して、内容は{n:2}つまり今aです.
5、ステートメント実行が終了し、元のオブジェクトは{n:1}から{n:1,x:{n:2}になりますが、元のオブジェクトはもう彼を引用する人がいないので、GCに回収され、現在のaは新しいオブジェクトを指す{n:2}
6、だから文章の先頭の運行結果があって、更にa.xを実行して、自然とundefinedです.
var person1 ={
name ="cc"
}
var person2 = person1;
console.log(person2.name); //cc
person1.name="vv";
console.log(person2.name); //vv
二つのオブジェクトが同じオブジェクトを指す場合、このオブジェクトの変更に同期します.次のコード:var a={n:1};
var b=a;
a.n=2;
console.log(b);//Object {n: 2}
aとbは同時に{n:1}を指しています.a.n=2操作を行うとb.nの値も変わります.連続して賦課する
コードは以下の通りです
var a={n:1}
var b=a;
a.x=a={n:2}
console.log(a.x);
console.log(b.x);
//undefined
//Object{n:2}
などの賦課の演算規則はB=Cです.A=B;つまり連続して値を割り当てます.右から左までは常に等号の右側の表式の結果だけを取って、等号の左側の古典的な例題に値を付けます.var a = {n:1};
a.x = a = {n:2};
console.log(a.x); // ?
:
console.log(a.x); // undefined
実行ロジック:1、実行前にaとa.x中のaの引用住所を全部取り出します.この値は彼らは{n:1}を指します.2、メモリに新しいオブジェクトを作成します.{n:2}
3、a={n:2}を実行して、aの参照を、{n:1}から新しい{n:2}を指すように変更します.
4、a.x=aを実行して、この時aはすでに新しい対象を指して、a.xは実行前にもとの引用を保留したため、a.xのaは依然としてもとの{n:1}オブジェクトを指して、元の対象に属性xを追加して、内容は{n:2}つまり今aです.
5、ステートメント実行が終了し、元のオブジェクトは{n:1}から{n:1,x:{n:2}になりますが、元のオブジェクトはもう彼を引用する人がいないので、GCに回収され、現在のaは新しいオブジェクトを指す{n:2}
6、だから文章の先頭の運行結果があって、更にa.xを実行して、自然とundefinedです.