javascript闭包范围链-如何查看绑定到范围链的变量?

javascript闭包范围链-如何查看绑定到范围链的变量?,javascript,Javascript,Javascript函数是对象,它们具有与之关联的作用域链。 如果存在某个闭包,且该闭包的作用域链与定义该闭包时有效的作用域链不同。例如,调用函数是从其他(父)函数返回的函数对象,该函数的作用域链包含大量私有变量, 所以调用函数将使用父函数已经存在的继承范围链以及有界的旧变量 是否有任何方法可以在不查看父函数的情况下检查与作用域链关联的变量 理想情况下,必须跟踪父函数中定义的变量,我的问题是在不查找父函数的情况下,我们可以看到与作用域链相关的变量吗 如果是(任何方法?),我们可以检查与范围链相关

Javascript函数是对象,它们具有与之关联的作用域链。 如果存在某个闭包,且该闭包的作用域链与定义该闭包时有效的作用域链不同。例如,调用函数是从其他(父)函数返回的函数对象,该函数的作用域链包含大量私有变量, 所以调用函数将使用父函数已经存在的继承范围链以及有界的旧变量

是否有任何方法可以在不查看父函数的情况下检查与作用域链关联的变量

理想情况下,必须跟踪父函数中定义的变量,我的问题是在不查找父函数的情况下,我们可以看到与作用域链相关的变量吗

如果是(任何方法?),我们可以检查与范围链相关的变量的当前值吗


还有人可以给出作用域链的结构(至少我知道它不像CPU堆栈那样的结构,而是其他什么?)

作用域变量可用于在相同上下文中创建的函数(JavaScript在功能上是作用域的)

您可以访问它们,但无法运行方法来报告它们。如果这是一个常见要求,我建议将内部变量放在“config”变量中:

var obj = (function (config) {
return {
  getTest: function () {
    return config.test;
  }
};
}({test: 1}));
Nick Zackas对范围链做了一个很好的介绍(我想在这里:)


否则,请将浏览器与诸如Chrome之类的开发工具配合使用(Firebug通常会忘记作用域变量是什么)。

作用域变量可用于在相同上下文中创建的函数(JavaScript在功能上具有作用域)

您可以访问它们,但无法运行方法来报告它们。如果这是一个常见要求,我建议将内部变量放在“config”变量中:

var obj = (function (config) {
return {
  getTest: function () {
    return config.test;
  }
};
}({test: 1}));
Nick Zackas对范围链做了一个很好的介绍(我想在这里:)


否则,请将浏览器与诸如Chrome之类的开发工具配合使用(Firebug经常忘记作用域变量是什么)。

1)我发现这很难理解。你能提供一些示例代码来充实你的问题吗?2) 有什么特别的原因让你想做这样的事情吗?1)我觉得这很难理解。你能提供一些示例代码来充实你的问题吗?2) 有什么特别的原因让你想做这种if的东西吗?谢谢你的指针,Nick正在谈论函数对象的作用域属性。它可用于阅读吗?我相信它只用于内部使用。虽然API没有向代码公开它,但它必须在某种程度上公开,以便浏览器插件使用。感谢指针,Nick正在谈论函数对象的范围属性。它可用于阅读吗?我相信它只用于内部使用。虽然API没有向代码公开它,但它必须在某种程度上公开,以便浏览器插件使用。