jsベースタイプと引用タイプ

1443 ワード

JavaScriptの基本的なルールは、基本的なデータタイプは、値を伝えることによって操作され、参照タイプはアドレスを伝えることによって操作される.
数字とブールタイプはJavaScriptにおいて基本的なタイプであり、それらはごく小さな数のバイトだけで構成されているので、これらのバイトはJavaScript解釈器のより低いレベルで動作しやすい.一方、オブジェクトは参照データの種類である.配列と関数は、オブジェクトの特殊なタイプであり、参照の種類でもあります.これらのデータタイプは、任意の数の属性または要素を含むことができ、したがって、彼らは固定サイズの基本データタイプ値のように容易に動作しない.対象と配列の値が恒久的に大きくなる可能性がある以上、これらのタイプを伝値で操作するのは意味がない.大量のメモリに対して効率的にコピーし比較することに影響を及ぼす可能性があるからだ.
基本タイプの値では、そのアドレスと具体的な内容は、スタックメモリ内に存在する.参照タイプの値に基づいて、そのアドレスはスタックメモリに存在し、その具体的な内容はヒープメモリに存在する.
基本タイプは全体的なものであれば、ヒープに置いてもいいです.また、引用タイプの中にある基本的なタイプも、山の上に置くのですか?
基本データタイプは参照数タイプに比べ、基本データタイプは関数実行時のスタックに保存され、参照データタイプの値はスタック空間に保存されます.
jsでの変数は基本タイプと参照タイプに分けられます.基本的なタイプは、スタックに保存されている簡単なデータセグメントで、参照のタイプは、スタックメモリに保存されているオブジェクトです.
基本タイプはメモリ内でそれぞれ固定サイズの空間を占有し、自動的に解放されます.参照タイプの値のサイズが固定されていません.スタック内に保存されているアドレスは、スタック内のオブジェクトを指しています.参照タイプの変数を検索するときは、まずスタックからアドレスを読み取り、アドレスを通してスタック内の値を見つけます.
例えば
var arr1 = [0 1 2 3];
var arr2 = arr1;
var str1 = arr2[2];
console.log(arr2);//0,1,2,3
console.log(str1);//2

arr2[4] = 4;
str1 = 5;
console.log(arr1);//0,1,2,3,4
console.log(arr1[2]);//2
上記の例から分かるように、arr 2のデータを修正すると、arr 1のデータも変更されていますが、str 1のデータを修正すると、arr 1のデータは変更されていません.
arr 1配列は参照タイプなので、arr 2に値を与えた時に伝えるのはスタックの中の住所で、メモリの中のオブジェクトではありません.arr 1 arr 2は同じブロックのメモリを指しています.arr 2がメモリを修正するとarr 1にも影響があります.str 1は基本的なタイプの値を得ていますので、str 1はarr 1メモリから一つの数値を取得してスタックメモリに保存しています.str 1は直接スタックの中で修正され、arr 1スタックのメモリ中のデータに影響を与えません.