调用Javascript中另一个函数中定义的函数(Calling a Function define

2019-07-03 13:21发布

我呼吁单击按钮这样的功能:

<input type="button" onclick="outer();" value="ACTION">​

function outer() { 
    alert("hi");       
}

它工作正常,我也得到一个警示:

现在,当我这样做:

function outer() { 
    function inner() {
        alert("hi");
    }
}

为什么我没有拿到一个警告?

虽然内部函数具有外功能可用一个范围。

Answer 1:

正如您所指出的作用域是正确的。 但是,你是不是调用inner的任意位置的功能。

您可以执行:

function outer() { 

    // when you define it this way, the inner function will be accessible only from 
    // inside the outer function

    function inner() {
        alert("hi");
    }
    inner(); // call it
}

要么

function outer() { 
    this.inner = function() {
        alert("hi");
    }
}

<input type="button" onclick="(new outer()).inner();" value="ACTION">​


Answer 2:

你可以把它变成一个模块并通过一个对象返回其暴露你内心的功能。

function outer() { 
    function inner() {
        console.log("hi");
    }
    return {
        inner: inner
    };
}
var foo = outer();
foo.inner();


Answer 3:

你是不是调用该函数inner ,只是定义它。

function outer() { 
    function inner() {
        alert("hi");
    }

    inner(); //Call the inner function

}


Answer 4:

您也可以尝试this.Here你正在返回的功能“里面”,并与第二组括号调用。

function outer() {
  return (function inside(){
    console.log("Inside inside function");
  });
}
outer()();

要么

function outer2() {
    let inside = function inside(){
      console.log("Inside inside");
    };
    return inside;
  }
outer2()();


文章来源: Calling a Function defined inside another function in Javascript