在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