Ich weiß, dieser Thread ist hier seit geraumer Zeit, aber ich dachte, ich würde auch meine 0,02 $ auf, wie innere Funktionen von außerhalb ihres Anwendungsbereichs aufrufen (könnte jemand profitieren) verlassen.
Beachten Sie, dass an jedem Ort, eine bessere Design-Entscheidung in Betracht gezogen werden sollte als eine hakelige Umgehung, die sich später rächen wird .
Wie wäre es mit der Verwendung von Funktionsausdrücke anstelle von Funktionsanweisungen und die Nutzung der globale Reichweite .
var innerFn;
function outerFn() {
innerFn = function(number) {
return number ** 2;
}
}
outerFn();
console.log(innerFn(5));
// if there's more complex code around and you could write this defensively
if (typeof innerFn !== 'undefined') {
console.log(`we are squaring the number 5 and the result is: ${innerFn(5)}`);
} else {
console.log('function is undefined');
}
Oder Sie können Folgendes verwenden Verschlüsse :
function outer() {
// initialize some parameters, do a bunch of stuff
let x = 5, y = 10;
function inner() {
// keeps references alive to all arguments and parameters in all scopes it references
return `The arithmetic mean of the 2 numbers is: ${(x + y) / 2}`;
}
return inner;
}
innerFn = outer(); // get a reference to the inner function which you can call from outside
console.log(innerFn());