👻

【メモリ格納】プリミティブ型・オブジェクト型

に公開
1

【プリミティブ型】

  • プリミティブ型の場合、変数には値が格納されている

test.js
let d = 100;

【オブジェクト型】

  • オブジェクト型の場合、変数にはヒープメモリのメモリアドレスが格納されている。値自体はヒープメモリに格納されている
  • ヒープのメモリアドレスはどのスコープからでもアクセス可能


【補足】

オブジェクト型のメモリ格納については以下
https://zenn.dev/417yr/articles/8db6f75c66e02f

仮引数にデータを渡す方法については以下
https://zenn.dev/417yr/articles/444845b95de921

Discussion

junerjuner

javascript に限って言うと プリミティブ / オブジェクト が そのまま 値型/ 参照型 にマップされていなかったりするので注意が必要です。

プリミティブは 不変であること とメソッドを持たないこと だけ の保証がされているので 値型として実装される保証は無いです。 不変な参照型の可能性があります。

そういう意味ではこの説明は 値型 / 参照型 であれば真ではないかと思われます。
(プリミティブ / オブジェクトだと 各言語の定義に依るので(C# だと 値型の一部がプリミティブですし。python だと プリミティブという分類が無いですし、javascript だと先述の通りプリミティブは特別扱いされている型くらいのニュアンスで 値型 に分類できないものも含まれていますし、 java なら プリミティブ / 参照型 ですし、 php なら スカラー型 / それ以外 でしょうか。