【问题标题】:How to call nested function in javascript?如何在javascript中调用嵌套函数?
【发布时间】:2025-08-10 06:45:01
【问题描述】:

我有两个这样的功能..

function a() {
  function b() {
    alert('reached');
  }
}

我如何从函数 a() 外部调用函数 b()..

【问题讨论】:

  • 你不能。 b 仅在 a 范围内定义。
  • 相关帖子here中的一些非常好的答案。

标签: javascript


【解决方案1】:

一般来说,你不能。在另一个函数中定义一个函数的目的是将其范围限定为该函数。

a 之外可以访问b 的唯一方法是(当您调用a 时)您在a 内部执行某些操作以使其在a 之外可用。

这通常是为了创建一个闭包,以便b 可以访问来自a 的变量,而不会将这些变量公开。正常的做法是返回b

function a() {
  var c = 0;
  function b() {
    alert(c++);
  }
  return b;
}
var d = a();
d();
d();
d();
var e = a();
e();
e();
e();

【讨论】:

    【解决方案2】:

    您需要返回内部函数调用。

    function a() {
      function b() {
        alert('reached');
      }
      return b();
    }
    

    然后你可以像这样调用函数a来调用这个函数:

    a();

    输出将是所需的警报。

    【讨论】:

    • 只要调用 b 就不需要返回返回值了
    【解决方案3】:

    您可以将您的代码重新排列到此

    function a() {
       this.b = function() {
       alert('reached');
     }
    }
    

    现在实例化它并运行:

    c = new a();
    c.b();
    

    【讨论】: