2013-10-12 90 views
6

有没有办法查看变量在内存中的位置?JavaScript变量内存位置

在ActionScript例如在调试模式下可以看到的变量

的内存位置我使用谷歌Chrome开发者工具,我可以看到在调试模式中的变量,但有关于的存储位置没有资料变量。

是否有任何显示可变内存位置的浏览器工具?

+1

我很好奇,为什么你需要 - 甚至是想要知道这个? – delnan

+1

在调试时可能非常有用。如果有两个名称相同的变量,可以通过内存位置区分它们。如果你使用'进入下一个函数调用'进行调试,有时你可以很容易地跟随变量,如果你知道它的内存位置。 – onetwo12

+0

@ onetwo12:不能有两个具有相同名称的变量。如果它们处于不同的范围内,那么它们中的任何一个都不活动,或者其中一个不在其他范围内。范围链确实向您显示。 – Bergi

回答

7

Take a memory snapshot。这将详细展示哪种物体在哪里浮动,在哪里以及它们有多少。

Example view

当然,它不会告诉你确切的内存或寄存器地址,但你很难将需要这些调试JavaScript。

4

不,这是不可能的。由于JavaScript解释方式的工作原理,获取内存地址非常困难。

+0

你能详细说明原因吗?值可能在寄存器中,但这对任何调试器都是一个问题,并且它们解决得很好。 – delnan

+0

不仅在寄存器中。例如,V8内部将一些变量表示为合并多个变量值的对象。计算实际分配给特定对象的变量以及单个js变量占用多少内存并不容易。这是为什么获得直接变量地址的工具不存在的原因。 –

+0

但它可以显示当前值,所以它清楚*确定*找出每个变量的位置。即使该逻辑不健全,并且所有其他操作都失败,仍然可以在运行w/debugger时关闭有问题的优化。 – delnan