スタックとヒープ
スタックは自動的に割り当てられるメモリ空間であり、システムによって自動的に解放されます。一方、ヒープは動的に割り当てられるメモリであり、サイズは可変であり、自動的には解放されません。
基本型: スタックメモリに格納される単純なデータセグメント。データサイズが決定され、メモリ空間サイズを割り当てることができます。
基本的なデータ型には、未定義、Null、ブール、数値、文字列が含まれ、それらの値はスタックに直接保存されます。
参照型: ヒープ メモリに保存されるオブジェクトの値であり、アドレス ポインタとスタックには、実際の値がヒープに保存され、ヒープ内の各領域は異なるサイズを持ち、状況に応じて特別に割り当てられます。参照型 (オブジェクト、配列、関数など) の値にアクセスする必要がある場合、まずスタックからオブジェクトのアドレス ポインターを取得し、次にヒープ メモリから必要なデータを取得します。
var s='str',t= 0,floatNum=1.1; var obj={ a:10, b:'Joel', c:function(){ console.log('function'); } }
上に示すように: 基本データ型の値はスタックに保存され、参照型のオブジェクト参照はスタックに保存され、値はヒープに保存されます。
変数宣言時のさまざまなメモリ割り当て:
メモリ割り当てメカニズムが異なると、アクセスメカニズムも異なります
JavaScript では、ヒープ メモリに格納されているオブジェクトへの直接アクセスは許可されていないため、オブジェクトにアクセスするときは、まずメモリ スタックにアクセスしてメモリ内のオブジェクトを取得します ヒープ内のアドレス、このアドレスを使用してオブジェクト内の値を取得します。これは伝説的な参照によるアクセスですが、基本型の値はメモリ スタックに直接格納されます。
基本的なタイプ: 元の値を保持する変数が別の変数にコピーされると、元の値のコピーが新しい変数に代入されます。その後、2 つの変数は完全に独立したものになります。同じ値を持っています。
パラメータの受け渡し(実パラメータを仮パラメータにコピーする処理)の違い
ECMAScriptの関数パラメータはすべて値渡しですが、プリミティブ型と参照型の値に違いがあるのはなぜですか?メモリ割り当ての違いだけが原因ではありません。
基本的なデータ型: 変数の値のコピーを作成してパラメーターに渡すだけです。その後、パラメーターと変数は相互に影響を与えません。以上がjsの基本データ型と参照データ型の違いについての詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。