Comments 19
Ну то есть мы избавились от злой глобальной переменной и получили вместо простого и очевидного джуновского "let i=0..." какой-то клубок из понятных только сеньору символов и скобок размером в два десятка строк. Чтобы что? Получить по факту ту же глобальную переменную, только зашифрованную, как рецепты древних алхимиков?
Ну так в заголовке статьи же сказано - это же писал сам Олег Иванов, и не абы откуда а из самой wmt group, значит так надо, это вам не хухры мухры
Причины вообще 2:
Потому что могу и интересно поизгаляться
Чтобы невозможно было подменить эту переменную извне. Если покажете, как внутри замыкания изменить переменную, буду очень заинтересован)
Чтобы невозможно было подменить эту переменную извне.
Не хотите менять переменную извне - просто не пишите там команд, меняющих эту переменную. <JustBuyAHouse.jpg>
Так в первом решении count переменная не глобальная переменная, а локальная для этого модуля. Когда экспортируется функция count() формируется то же самое замыкание с переменной count и поменять из вне ее минуя count() нельзя. По моему модуль с count функцией самое простое для понимания решение. С замыканием не совсем ок, потому, что вы очевидно в одном файле держите и counter и код использующий его, иначе зачем прятать переменную в замыкании. А это как бы считается нехорошим стилем. :) Но я так делаю, часто.
какой-то клубок из понятных только сеньору символов и скобок размером в два десятка строк
если в вашем мире только сеньоры добираются до прокси, то у меня для вас плохие новости
@CitizenOfDreams не такие уж мы и древние. 🧙♂️
А вот если будет на фронте куча генераторов, таких, как описал автор, насколько ресурсоёмкие такие бесконечные циклы?
Одно дело на байт-коде вертеть опросы портов, а тут высокоуровневый язык...
Наверное, стоило оговорить в ТЗ, что без глобалов. Кому придёт в голову нахратить чужую переменную? Также про атрибуты класса, будь они хоть протектед, хоть приватные. Если в проекте есть такой саботажник - наверняка, никакие ухищрения не помогут.
А статья интересная, полезная.
Кому придёт в голову нахратить чужую переменную?
Ну, если глобальную переменную назвать "i", то всякое может быть.
Кому придёт в голову нахратить чужую переменную?
Если вы хоть раз ревьюили код джуна, то таких вопросов обычно не возникает;)
\- не ну а че, там как раз лежит то, что мне надо, ну и что что она из другого компонента и там по-другому используется
Кстати тест никогда не будет зелёным, потому что там ошибка. Typo.
Для такой мелочи подойдёт решение от AI. Это не напоминает бухгалтера, который все равно из принципа работает на счетах, когда есть Excel.
Поправьте пожалуйста последний листинг WA, туда джаваскрипт пролез (случайный Ctrl-V?)
const counter = function() {
this.i = (this.i || 0) + 1;
return this.i
};
Этот счётчик считает с единицы.
Используем всю мощь JavaScript для написания счётчика. Разбор от Олега Иванова, фронтенд-разработчика WMT Group