【问题标题】:How to call a child function inside a function from another function in Javascript? [duplicate]如何从Javascript中的另一个函数调用函数内部的子函数? [复制]
【发布时间】:2017-07-25 15:23:33
【问题描述】:
function Hello()
{
  function HelloAgain(){
  }
}

function MyFunction(){
...
}

这里我需要从 MyFunction() 调用函数 HelloAgain()。 您能否针对这种情况提出任何可能的解决方案。

【问题讨论】:

  • 谷歌关闭了吗?
  • 如果HelloAgain 是嵌套的,则表明它不应该在父函数之外使用。如果您在函数之外需要它,为什么要首先嵌套它。而且我认为这在逻辑上没有意义。如果子函数使用来自父函数的数据怎么办?如果父函数从未被调用,内部函数将使用什么数据?
  • 这有点不可能......除非你以某种方式暴露它。
  • @VedPrakash 你确定那个副本吗?这两个函数看起来都是顶级的,但在这个问题中有一个嵌套函数。
  • 如何从第一个函数和内部函数返回对象作为方法jsfiddle.net/Lg0wyt9u/2089

标签: javascript function


【解决方案1】:

你不能,HelloAgain 函数在一个闭包中并且作用于那个闭包。

您可以返回 HelloAgain 函数,然后从任何可以调用 Hello 的地方调用它。

function Hello () {
  function HelloAgain () {}
  return HelloAgain;
}

function MyFunction () {
  Hello().HelloAgain();
}

但这有点奇怪。

你可以使用this关键字来处理这个问题。

function Hello () {
  this.helloAgain = function helloAgain () {}
}

var hello = new Hello();

function MyFunction () {
  hello.helloAgain();
}

【讨论】:

  • 请解释一下this在那种情况下将是window(从而使helloagain成为一个全局变量),说“你可以用this来处理这个问题”有点有点晦涩。
  • this 在上下文中 Hello 不是 window jsfiddle.net/L09y3gcL
  • 真的,抱歉,完全错过了new Hello() 部分。
【解决方案2】:

你不能。 HelloAgain 的范围仅限于 Hello 函数。 这是在 javascript 中创建私有作用域的唯一方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-01
    • 1970-01-01
    • 2018-06-12
    • 1970-01-01
    • 1970-01-01
    • 2019-09-11
    • 1970-01-01
    相关资源
    最近更新 更多