Der folgende Code gab einen Fehler, auf einige Version in Firefox Browser - linksHandle is not defined
.Schließen und Funktion hissen - funktioniert nicht auf Firefox
Der Code besteht aus einer Funktion, die am unteren Rand eine Funktion namens LinksHandle hat. Soweit ich weiß, soll diese Funktion ausgelöst werden, wenn die Funktion, in der sie definiert ist, aufgerufen wird.
Daher sollte die für das Ereignis 'mMenuReady' definierte Funktion darauf zugreifen können, da sie alle Funktionen und Variablen enthält, die in ihrem Ausführungskontext definiert wurden.
Warum benötigen einige Firefox-Versionen die zuvor definierte Funktionsdeklaration (linksHandle), damit der Callback 'mmenu' die Funktion umschließt?
document.addEventListener('readystatechange', function() {
if (document.readyState === 'interactive') {
if (typeof jQuery === 'function') {
// callback function that is invoked later by the event that is triggered -> $(window).trigger("mMenuReady")
$(window).on('mMenuReady', function() {
var links2 = Array.prototype.slice.call(document.querySelectorAll('#mm-mainMenu a'));
links2.forEach(linksHandle);
});
}
function linksHandle(elem) {
// function code
}
}
});
wenn der Code nicht innerhalb des if-Blocks war und direkt in der Funktion dekaliert wurde. war die innere Funktion in ES6 gehisst? meine frage ist die if-aussage hat einen einfluss auf das hissen der funktion? – user3021621
Ja, Function-Level-Funktionsdeklarationen werden im Bereich der Funktionsebene gehisst. – Bergi
aber in fortgeschrittenen ES ist die Funktion auch in if-Blöcken gehisst? – user3021621