Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中调用另一个函数中定义的函数_Javascript_Function_Scope - Fatal编程技术网

在Javascript中调用另一个函数中定义的函数

在Javascript中调用另一个函数中定义的函数,javascript,function,scope,Javascript,Function,Scope,我在单击按钮时调用一个函数,如下所示: <input type="button" onclick="outer();" value="ACTION">​ function outer() { alert("hi"); } function outer() { function inner() { alert("hi"); } } <input type="button" onclick="outer().inner

我在单击按钮时调用一个函数,如下所示:

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

function outer() { 
    alert("hi");       
}
function outer() { 
    function inner() {
        alert("hi");
    }
}
<input type="button" onclick="outer().inner();" value="ACTION">​
为什么我没有得到警告


尽管内部函数在外部函数中有一个可用的作用域。

您不是在调用函数
内部函数,而是在定义它

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

    inner(); //Call the inner function

}

正如您所指出的,范围界定是正确的。但是,您没有在任何地方调用
内部
函数

您可以执行以下任一操作:

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
}

函数外部(){
this.inner=函数(){
警报(“hi”);
}
}
​

您可以将其制作成一个模块,并通过在对象中返回来公开您的内部函数

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

您也可以尝试一下,这里返回函数“inside”并使用第二组括号进行调用

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

如果要使用“外部”函数调用“内部”函数,可以执行以下操作:

function outer() { 
     function inner() {
          alert("hi");
     }
     return { inner };
}
在“onclick”事件中,调用函数如下:

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

function outer() { 
    alert("hi");       
}
function outer() { 
    function inner() {
        alert("hi");
    }
}
<input type="button" onclick="outer().inner();" value="ACTION">​

您也可以使用return:

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

}
outer();

同样,这不是对这个问题的直接回答,而是由网络搜索引导的。通过简单地将内部函数赋值给一个全局变量,最终在不使用return等的情况下公开了内部函数

var fname;

function outer() {
    function inner() {
        console.log("hi");
    }
    fname = inner;
}
现在

fname();

你试着在哪里调用
internal
?顺便问一下,被称为onclick=“(新的outer()).inner();”的是什么,我是第一次看到它time@Mike字体最好忘了它,它不适合这个。他正在创建
外部
构造函数的新实例,并在it@Mike-如果您需要
内部()
可在外部访问
外部()
,第二种方式将允许您。但是你不需要第二种方式来满足你的要求。标记答案的第一部分是这个特定问题的正确答案,但是Google把我带到了这里,这实际上就是我要寻找的,搜索:“javascript访问函数中的函数。”我猜这就是为什么这个问题有这么多赞成票,尽管这个问题是错误的。非常感谢!我寻找这个答案已经有一段时间了D