Ich verstehe das Konzept der Variablen und Funktionsdeklaration in JavaScript am oberen Rand des umschließenden Bereichs gehisst. Aber wenn ich eine benannte Callback-Funktion habe, wird sie nicht gehisst. Ich verstehe nicht, warum das so ist. Ich habe den Code in dem unten stehenden Link das SzenarioWarum werden Callback-Funktionen nicht in JavaScript gehostet?
Beispiel erläutern:
function enclosingScope() {
var b;
function inner (def) {
def();
}
var a = 2;
}
// After hoisting due to compilation, the above changes to
function enclosingScope() {
// Function declarations are hoisted before variables
function inner (def) {
def();
}
var b, a;
a = 2
}
// But if I have a named callback, will that be hoisted?
function enclosingScope() {
function inner (def) {
def();
}
var b, a;
a = 2
inner(function cb() {
console.log('Test callback hoisting')
})
}
F: Was ist passiert, als Sie es versucht haben? F: Warum sogar * fragen *, ohne es einfach selbst auszuprobieren? Du hast * den * Code - was hast du gefunden ??? – paulsm4
Ich habe die Frage bearbeitet.Vielleicht können Sie jetzt einen Blick darauf werfen und helfen –
Wenn Sie über Ihre cb() - Funktion sprechen, ist es eine benannte Funktion Ausdruck und Sie übergeben einen Verweis auf es auf die innere() Funktion. Funktionsausdrücke werden nicht gehißt, und der Name cb kann nur innerhalb dieser Funktion verwendet werden - er erstellt keine Variable cb innerhalb des Bereichs, also gibt es nichts zu hissen, und tatsächlich bezieht sich dein Code nie irgendwo anders auf cb . – nnnnnn