jsの値の種類と引用の種類は何ですか?
3728 ワード
1、javascriptにおける変数のタイプは、値タイプ(基本データタイプ)と参照タイプの値タイプに分けられます.Stering(文字列)、Number(数値)、Boolean(ブール値)、Unidefined、Null引用タイプ:Aray(配列)、Object(対象)、Function(関数)
2、値タイプと参照タイプの違い(1)格納位置が異なる値タイプは空間的に固定され、スタックに保存され、保存と複製は値そのもので、typeOf()検出値のタイプが使用できます.参照タイプは空間的に固定されていません.スタックに保存と複数作成は対象を指すポインタです.instance of()を使用してデータタイプを検出し、new()を使用します.メソッドが作成したオブジェクトは参照型です.
(2)複製方式が異なる値型の変数の直接割当値は、var a=10のように深く複製されます.var b=aaの値はbにコピーされます.bの修正値はaに影響しません.2つのデータはメモリ内で完全に独立しています.参照型の変数の直接割当値は、実際には伝達参照であり、浅いコピーであるだけで、変数に格納されているアドレスの割り当て値を個別に記憶していますが、2つの変数のうちの1つのオブジェクトを変更し、他の参照にアクセスすると、修正された値にもアクセスします.
(3)値の種類は属性と方法を追加できません.参照の種類は属性と方法を追加できます.
(4)値タイプの比較は値の比較であり、それらの値が等しい場合にのみ等しい.引用の種類の比較は引用の住所の比較の時に、双等号は比較をする時タイプ転換をしたことに注意して、全等号は値とタイプが等しくなることがやっと等しいことができるのです.
(5)関数での使用
2、値タイプと参照タイプの違い(1)格納位置が異なる値タイプは空間的に固定され、スタックに保存され、保存と複製は値そのもので、typeOf()検出値のタイプが使用できます.参照タイプは空間的に固定されていません.スタックに保存と複数作成は対象を指すポインタです.instance of()を使用してデータタイプを検出し、new()を使用します.メソッドが作成したオブジェクトは参照型です.
(2)複製方式が異なる値型の変数の直接割当値は、var a=10のように深く複製されます.var b=aaの値はbにコピーされます.bの修正値はaに影響しません.2つのデータはメモリ内で完全に独立しています.参照型の変数の直接割当値は、実際には伝達参照であり、浅いコピーであるだけで、変数に格納されているアドレスの割り当て値を個別に記憶していますが、2つの変数のうちの1つのオブジェクトを変更し、他の参照にアクセスすると、修正された値にもアクセスします.
(3)値の種類は属性と方法を追加できません.参照の種類は属性と方法を追加できます.
(4)値タイプの比較は値の比較であり、それらの値が等しい場合にのみ等しい.引用の種類の比較は引用の住所の比較の時に、双等号は比較をする時タイプ転換をしたことに注意して、全等号は値とタイプが等しくなることがやっと等しいことができるのです.
(5)関数での使用
//
var num = 10;
function print(num) {
num = 100;
console.log(num); // 100
}
console.log(num); // 10
//
var obj = {
name: 'jone'
}
function printObj(obj) {
obj.name = 'lucy';
console.log(JSON.stringify(obj)); // {"name":"lucy"}
}
console.log(JSON.stringify(obj)); // {"name":"lucy"}
値の種類の変数は、関数内で変更されたときに関数のスコープ内でのみ有効になります.関数が破壊された時に、今回の変更は直ちに無効になります.参照の種類が関数で変更されたときに変更されるのは、実行時のデータエリアの値です.関数が破壊されても変数の値は変わります.