Die Funktion Zugriff auf den Umfang haben würde, wo es definiert wurde, und umfasst jeden geordneten Bereich (z.B. global/Fenster). Wenn es in einer anderen Funktion definiert ist, hat es Zugriff auf alle Variablen, die in dieser Funktion definiert sind. Wenn es als Argument wie ein Callback übergeben wird, hat es keinen Zugriff auf Variablen, die in der Funktion definiert sind, in die es übergeben wurde, weil es außerhalb dieser Funktion definiert und als Argument übergeben wurde.
Beispiel:
var a = 1;
(function(callback){ //func1
//access variable in parent scope
console.log('func1', a); //outputs 1
//define a new variable within this function's scope
var b = 2;
//call our callback
callback();
//define and call a function within this function's scope
(function(){ //func3
//access variable in parent scope
console.log('func3', a); //outputs 1
//access variable in parent function scope
console.log('func3', b); //outputs 2
})();
})(function(){ //func2
//access variable in parent scope
console.log('func2', a); //outputs 1
//access variable from invoking function
console.log('func2', b); //outputs undefined
});
Dies würde die Ausgabe so etwas wie:
func1 1
func2 1
func2 undefined
func3 1
func3 2
Wo alle Funktionen Variable a
sehen können, weil sie in einem übergeordneten Bereich auf alle Funktionen ist. Die Argumentfunktion kann die Variable b
nicht sehen, da b
in einer anderen Funktion definiert ist und die Argumentfunktion außerhalb definiert und als Argument übergeben wurde. Und die in der ersten Funktion definierte Funktion kann sowohl a
als auch b
sehen.
wahrscheinlich ist es '{p1: true, m: 3}'? –
Die Funktion hätte Zugriff auf den Bereich, in dem sie definiert wurde, und schließt einen übergeordneten Bereich ein (z. B. global/window). Wenn es in einer anderen Funktion definiert ist, hat es Zugriff auf alle Variablen, die in dieser Funktion definiert sind. Wenn es als Argument wie ein Callback übergeben wird, hat es keinen Zugriff auf Variablen, die in der Funktion definiert sind, in die es übergeben wurde, weil es außerhalb dieser Funktion definiert und als Argument übergeben wurde. –
IslamI bakaev Sorry hat es nicht verstanden. Jonathan Kuhn Also ist die Frage ..., soll ich die in der Argumentliste definierte anonyme Funktion als eine in einer anderen Funktion definierte Funktion betrachten? –