【问题标题】:Is there any method to check memory address of Javascript variable?有什么方法可以检查 Javascript 变量的内存地址吗?
【发布时间】:2018-11-04 22:56:21
【问题描述】:

是否可以在现代 Javascript 中找到 JavaScript 变量的内存地址?或者 Typescript 变量的地址。

我对值传递和引用传递感到困惑,使用内存地址很容易理解现实。现在我们有了 ES8 和 Typescript 但仍然无法获取变量和对象的内存地址。

【问题讨论】:

  • 发布了几个答案,但我想说真正的问题是:你为什么需要这个?
  • Typescript 中的变量呢?
  • 我需要这个答案,因为我阅读了很多帖子和文档以通过值传递和通过引用传递,但由于内存管理,甚至没有一个人确定现实。

标签: javascript


【解决方案1】:

来自this post

这或多或少是不可能的 - Javascript 的评估策略是始终使用按值调用,但在对象(包括数组)的情况下,传递的值是对对象的引用,它不会被复制或克隆。如果您在函数中重新分配 Object 本身,则不会更改原始对象,但如果您重新分配 Object 的某个属性,则会影响原始 Object。

【讨论】:

  • 为了传递引用,我们需要知道标识符的内存地址。
【解决方案2】:

我所知道的所有 JavaScript 运行时都对你隐藏了这一点。

但是,您可以使用Typed Arrays 和基于您希望存储的数据类型的适当缓冲区视图来模拟内存指针的行为。您可以通过将数据保存在特定偏移量处来模拟指针,然后将该偏移量传递给直接在类型化数组中操作数据的不同函数:也就是偏移量的行为有点像低级指针。

【讨论】:

    【解决方案3】:

    JavaScript 本身与实现无关,因此语言本身故意不包含内存地址等概念。在语言之外,您可以使用浏览器的调试工具拍摄内存快照,其中可能包含信息。但是请注意,并不能真正保证对象会保留其地址。

    【讨论】:

      猜你喜欢
      • 2019-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-13
      • 2011-02-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多