我呼吁单击按钮这样的功能:
<input type="button" onclick="outer();" value="ACTION">
function outer() {
alert("hi");
}
它工作正常,我也得到一个警示:
现在,当我这样做:
function outer() {
function inner() {
alert("hi");
}
}
为什么我没有拿到一个警告?
虽然内部函数具有外功能可用一个范围。
正如您所指出的作用域是正确的。 但是,你是不是调用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">
你可以把它变成一个模块并通过一个对象返回其暴露你内心的功能。
function outer() {
function inner() {
console.log("hi");
}
return {
inner: inner
};
}
var foo = outer();
foo.inner();
你是不是调用该函数inner
,只是定义它。
function outer() {
function inner() {
alert("hi");
}
inner(); //Call the inner function
}
您也可以尝试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()();