现代 JavaScript 或 TypeScript 中是否可以找到变量的内存地址?
我对值传递和引用传递感到困惑,使用内存地址可以更容易地理解实际情况。现在我们有了 ES8 和 TypeScript,但仍然无法获取变量和对象的内存地址。
现代 JavaScript 或 TypeScript 中是否可以找到变量的内存地址?
我对值传递和引用传递感到困惑,使用内存地址可以更容易地理解实际情况。现在我们有了 ES8 和 TypeScript,但仍然无法获取变量和对象的内存地址。
来自这篇文章:
这几乎是不可能的 - JavaScript 的求值策略始终使用按值调用,但在对象(包括数组)的情况下,传递的值是对该对象的引用,并未被复制或克隆。如果您在函数中重新分配对象本身,则原始对象将不会更改,但是如果您重新分配对象的其中一个属性,则会影响到原始对象。
我所知道的所有JavaScript运行时都会将这个隐藏起来。
然而,您可以通过使用Typed Arrays和基于要存储的数据类型的适当缓冲区视图来模拟内存指针的行为。您可以通过在特定的偏移量处保存数据,然后将该偏移量传递给不同的函数来直接操作类型化数组中的数据,从而模拟指针:也就是说,偏移量充当低级指针。
JavaScript本身意味着与实现无关,因此像内存地址这样的概念在语言本身中是故意缺失的。在语言之外,您可以使用浏览器的调试工具来进行内存快照,并且其中可能包含该信息。但请注意,没有真正的保证对象将保留其地址。