【问题标题】:Access all local variables访问所有局部变量
【发布时间】:2011-04-19 10:01:01
【问题描述】:

javascript 中的每个全局变量都是 'window' 的属性

显然,所有局部变量(以及参数)都存储为'Call object' 的属性(请参阅每个函数的第 4.6.2 章。可能只在所述函数的生命周期内存在。

基本上我希望能够做到

for (var obj in CallObject ) { // }

我可以访问包含局部变量的所述对象吗?如果可以,如何访问?或者是否有任何其他方法可以访问函数的所有局部变量。

[编辑]

事实证明,参数是函数激活对象的属性。这必须存储在某个地方。

"激活对象纯粹是一个 规范机制。它是 ECMAScript 程序不可能 访问激活对象。”

原来 ECMAScript 声明我不允许访问它。

如何访问参数属性并以某种方式链接到局部变量?

【问题讨论】:

  • 在 Javascript 中没有办法做到这一点。此外,全局变量(严格来说)并不总是“窗口”的属性 - 它取决于解释器的运行位置。例如,在 V8 或 Rhino 中运行的服务器端 Javascript 程序中,没有“窗口”,但有一个扮演相同角色的“全局上下文”对象(就您的问题而言)。

标签: javascript local


【解决方案1】:

没有。在 JavaScript 的任何浏览器实现中都无法做到这一点。

理论上,实现可以提供扩展以允许代码检查当前的变量对象(也就是函数中的 Activation 对象;“调用对象”是 Flanagan 提出的一个术语,在 ECMAScript 中的任何地方都没有提及)规范),但我所知道的没有任何实现可以做到这一点。

【讨论】:

    【解决方案2】:

    在每个函数中都有一个名为“arguments”的隐式数组,但除此之外没有这样的东西。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-30
      • 2011-03-14
      • 1970-01-01
      • 2011-09-09
      • 1970-01-01
      • 1970-01-01
      • 2018-10-28
      相关资源
      最近更新 更多