В приведенном ниже коде приведена ошибка, на некоторой версии в браузере firefox - linksHandle is not defined
.Закрытие и функция подъема - не работает на firefox
Код состоит из функции, которая внизу имеет функцию с именем linksHandle. Насколько я знаю, эта функция должна быть поднята, когда функция, в которой она определена, вызывается.
Поэтому функция, определенная для события «mMenuReady», должна иметь к ней доступ, поскольку она включает все функции и переменные, которые были определены в контексте выполнения.
Почему некоторые версии firefox нуждаются в объявлении функции (linksHandle), который должен быть определен ранее, чтобы обратный вызов «mmenu» включал эту функцию?
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
}
}
});
, если код не был внутри блока if, и сразу же был декалирован в функции. была ли внутренняя функция поднята в ES6? Мой вопрос: утверждение if влияет на подъем функции? – user3021621
Да, объявления функций на уровне функций поднимаются на область функционального уровня. – Bergi
, но в более продвинутых ES, функция поднимается и в if-блоках? – user3021621