0

我有一个复杂的代码。这是它的示例。我不能改变结构。我怎么e()打电话f()

a=function b()
    {
        var c,d;
        c=function()
        {
              function e()
              {
              ...
              }
              ...
        }
        d=function()
        {
              function f()
              {
              //i need e() here
              }
              ....
        }

}
4

2 回答 2

2

您不能,因为它们是不同范围内的本地功能,并且彼此无法访问。如果您需要e()从 insidef()的范围内调用,则e()不应定义在c()' 范围内,而应定义在 ' 范围内b(),它将在f()' 范围内可见。

于 2012-10-21T12:01:05.703 回答
1

你不能。这就是范围界定的全部意义所在。

但是,您可以e通过在函数外部声明该变量来使该变量对父作用域可用c

a = function b() {
  var c, d, e;
  c = function () {
    e = function () {
      ...
    };
    ...
  };
  d = function () {
    function f() {
      e();
    }
    ...
  };
};
于 2012-10-21T12:00:50.477 回答