Я узнал, что следующее не работает в FF и работает в любом другом стандартном браузере.
if(jQuery){
importantScript();
function importantScript(){
console.log("this is important");
};
}
Это связано с тем, что FF не поднимает функции внутри операторов if. Похоже, раньше это было правилом, но я читал страница 533 (B.3.3) и B.3.4 вот заметки об обрыве:
До ECMAScript 2015 спецификация ECMAScript не определяла вхождение FunctionDeclaration как элемента списка StatementList инструкции Block. Однако поддержка этой формы FunctionDeclaration была допустимым расширением, и большинство реализаций ECMAScript, размещенных в браузере, допускали их. К сожалению, семантика таких объявлений различается в разных реализациях. Из-за этих семантических различий существующий веб-код ECMAScript, использующий объявления функций на уровне блоков, переносим между реализациями браузера только в том случае, если использование зависит только от семантического пересечения всех реализаций браузера для таких объявлений. Ниже приведены варианты использования, которые подпадают под эту семантику пересечения:
Функция объявлена и на нее ссылаются только в пределах одного блока
Функция объявляется и, возможно, используется в одном блоке, но на нее также ссылается внутреннее определение функции, которое не содержится в этом же блоке.
Функция объявляется и, возможно, используется в одном блоке, но также упоминается в последующих блоках.
Можете ли вы помочь мне интерпретировать это? Я чувствую, что приведенный выше код будет соответствовать техническим правилам, описанным выше.