Использование выражения с именованным выражением, вызываемым сразу (IIFE) вместо комментариев
Каковы преимущества и недостатки использования Named IIFE в JS-коде для описания и группировки связанного кода?
Я использую этот "шаблон", чтобы предоставить структуру для моего более процедурного кода, который выполняется только в одном месте.
Пример
(function hideStuffOnInstantiaton(){
$('oneThing').hide().removeClass();
$('#somethign_else').slideUp();
$('.foo').fadeOut();
}());
Я считаю это предпочтительным для обоих:
// hide Stuff on Instantiaton
$('oneThing').hide().removeClass();
$('#somethign_else').slideUp();
$('.foo').fadeOut();
поскольку со временем комментарий может быть отделен от кода, и не сразу видно, какие строки (-ы) комментарий применяется к
и:
function hideStuffOnInstantiaton(){
$('oneThing').hide().removeClass();
$('#somethign_else').slideUp();
$('.foo').fadeOut();
};
hideStuffOnInstantiaton();
Почему нужно разделять функцию и ее выполнение, если она выполняется только в одном месте?
Существуют ли какие-либо характеристики производительности, ремонтопригодности, проверки или кроссбраузер при использовании этого шаблона? Я не верю, что видел, как многие люди используют это в дикой природе, но я чувствую, что это может быть очень полезно
Ответы
Ответ 1
зачем отделять функцию и ее выполнение, если она выполняется только в одном месте?
В этом случае нет причин использовать функцию (с ее служебными данными) вообще - просто вставьте код. И не скрывайте комментарии в именах функций, я бы назвал это плохой практикой. Если кто-то отделяет комментарий от кода, это его вина не ваша - на самом деле он мог бы также собрать совершенно несвязанные вещи в вашем IENFE.
Хотя этот шаблон может быть полезен, если вы повторно используете функцию (рекурсивно) или вам нужно построить закрытие вокруг чего-либо, а именованная функция упрощает отладку stacktraces, есть различные ошибки в IE. Поэтому избегайте этого, если вам это действительно не нужно - и вы этого не сделаете.
Если вы хотите выразить, что ваш комментарий относится к блоку кода, вы можете явно использовать для него блок-инструкцию и поставить свой комментарий:
{ // hide Stuff on Instantiaton
$('oneThing').hide().removeClass();
$('#somethign_else').slideUp();
$('.foo').fadeOut();
}
... хотя это, скорее всего, путает ваших читателей так же, как избыточный IEFE.
Ответ 2
Я всегда думал, что ярлыки классные:
hideStuffOnInstantiaton: {
$('oneThing').hide().removeClass();
$('#somethign_else').slideUp();
$('.foo').fadeOut();
}
В действительности, обычно глупо это делать. Вместо этого сгруппированная функциональность обычно принадлежит своей собственной функции.