19

可能重复:
如何获取 JavaScript 变量的内存地址?

有没有办法在javascript中打印数组的引用?

我想要做的是检查两个数组是否具有相同的引用,并且可以像这篇文章所建议的那样完成:如何检查两个变量是否具有相同的引用?

但是,如果我正在使用数组,是否可以打印参考?

例子

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

var thesame = Array1==Array2;

相同的值是false

但是我可以像 window.alert(@Array1); 在 javascript 中那样使用某种想法打印他的 Array1 引用吗?

- 更新 -

我真正想要的是被引用的实际地址空间。

4

2 回答 2

15

Javascript 实现仅在遵循 ECMA 规范的情况下进行标准化。内存存储的复杂性可能因浏览器而异,并且 JS 无法访问。

至于您为什么关心的问题:JS 是一种轻量级脚本语言。将内存管理和优化任务委托给平台是很有意义的,而它需要不必要的循环来向您公开一个接口。

于 2012-12-03T15:00:30.510 回答
6

如果你想查看某种指向被引用类型(数组、对象)的指针的值——你不能。

例如,在 Perl 中,您有一个标量类型,它是对某物的引用。当您打印此标量时,您可以获得类似于指向该值的指针的字符串表示形式。JavaScript 中没有这种标量的类比。

您只能检查两个引用是否指向同一事物。

与所有带有 GC 的语言一样,在 JavaScript 中,您无法确定在程序执行过程中同一个对象是否具有相同的内存指针(它可以在堆中移动)。正如我所提到的,您没有将指针抽象为语言中的内置类型。所以显示当前引用可能不是一个好主意,因为它可能是动态的(取决于引擎的架构,尤其是 GC)。

于 2012-12-03T14:59:36.823 回答