bugfix> javascript > 投稿

最新のJavaScriptでJavaScript変数のメモリアドレスを見つけることは可能ですか?または、Typescript変数のアドレス。

値による受け渡しと参照による受け渡しについて混乱しています。メモリアドレスを使用すると、現実を簡単に理解できます。これでES8とTypescriptができましたが、変数とオブジェクトのメモリアドレスを取得できません。

回答 3 件
  • この投稿から:

    多かれ少なかれ不可能です-Javascriptの評価戦略は常に値による呼び出しを使用することですが、オブジェクト(配列を含む)の場合、渡される値はオブジェクトへの参照であり、コピーまたは複製されません。関数でオブジェクト自体を再割り当てしても、元のオブジェクトは変更されませんが、オブジェクトのプロパティの1つを再割り当てすると、元のオブジェクトに影響します。

  • JavaScript自体は実装に依存しないため、メモリアドレスなどの概念は意図的に言語自体に存在しません。言語の外部では、ブラウザのデバッグツールを使用してメモリスナップショットを取得できます。これには情報が含まれている場合があります。ただし、オブジェクトがそのアドレスを保持するという実際の保証はないことに注意してください。

  • 私が知っているすべてのJavaScriptランタイムは、これをあなたから隠しています。

    ただし、型付き配列と、保存するデータの種類に基づいた適切なバッファービューを使用して、メモリポインターの動作をシミュレートできます。特定のオフセットにデータを保存し、そのオフセットを型付き配列で直接データを操作するさまざまな関数に渡すことで、ポインターをシミュレートできます。つまり、オフセットは低レベルのポインターのように機能します。

あなたの答え