19

重複の可能性:
JavaScript変数のメモリアドレスを取得するにはどうすればよいですか?

javascriptで、配列の参照を出力する方法はありますか?

私がしたいのは、2つの配列が同じ参照を持っているかどうかを確認することです。これは、この投稿が示唆するように行うことができます。2つの変数が同じ参照を持っているかどうかを確認する方法は?

しかし、たとえば配列を使用している場合、参照を印刷することは可能ですか?

var Array1=["hi"];
var Array2=["hello"];

var thesame = Array1==Array2;

同じ値はfalseです。

しかし、JavaScriptのようにArray1参照を印刷することはでき window.alert(@Array1); ますか?

- アップデート -

私が正確に欲しいのは、参照されている実際のアドレス空間です。

4

2 に答える 2

15

Javascriptの実装は、ECMA仕様に準拠している場合にのみ標準化されます。メモリストレージの複雑さはブラウザによって異なる可能性があり、JSからアクセスできるようにはなりません。

なぜかという質問に関しては、JSは軽量のスクリプト言語です。メモリ管理と最適化のタスクをプラットフォームに委任することは理にかなっていますが、このためのインターフェイスを公開するには、不要なフープジャンプが必要になります。

于 2012-12-03T15:00:30.510 に答える
6

参照されている型(配列、オブジェクト)へのある種のポインターの値を確認したい場合は、確認できません。

たとえば、Perlには、何かへの参照であるスカラー型があります。このスカラーを出力すると、値へのポインターの文字列表現のようなものを取得できます。JavaScriptにはその種のスカラーのアナロジーはありません。

2つの参照が同じものを指しているかどうかのみを確認できます。

GCを使用するすべての言語と同様に、JavaScriptでは、同じオブジェクトがプログラムの実行に沿って同じメモリポインターを持つことを保証できません(ヒープ内で移動できます)。すでに述べたように、言語の組み込み型としてのポインターの抽象化はありません。したがって、現在の参照を表示することは、動的である可能性があるため(エンジンのアーキテクチャ、特にGCによって異なります)、あまり良い考えではない可能性があります。

于 2012-12-03T14:59:36.823 に答える