Pull to refresh

Comments 19

Ну то есть мы избавились от злой глобальной переменной и получили вместо простого и очевидного джуновского "let i=0..." какой-то клубок из понятных только сеньору символов и скобок размером в два десятка строк. Чтобы что? Получить по факту ту же глобальную переменную, только зашифрованную, как рецепты древних алхимиков?

Ну так в заголовке статьи же сказано - это же писал сам Олег Иванов, и не абы откуда а из самой wmt group, значит так надо, это вам не хухры мухры

Причины вообще 2:

  1. Потому что могу и интересно поизгаляться

  2. Чтобы невозможно было подменить эту переменную извне. Если покажете, как внутри замыкания изменить переменную, буду очень заинтересован)

Чтобы невозможно было подменить эту переменную извне.

Не хотите менять переменную извне - просто не пишите там команд, меняющих эту переменную. <JustBuyAHouse.jpg>

Так в первом решении count переменная не глобальная переменная, а локальная для этого модуля. Когда экспортируется функция count() формируется то же самое замыкание с переменной count и поменять из вне ее минуя count() нельзя. По моему модуль с count функцией самое простое для понимания решение. С замыканием не совсем ок, потому, что вы очевидно в одном файле держите и counter и код использующий его, иначе зачем прятать переменную в замыкании. А это как бы считается нехорошим стилем. :) Но я так делаю, часто.

какой-то клубок из понятных только сеньору символов и скобок размером в два десятка строк

если в вашем мире только сеньоры добираются до прокси, то у меня для вас плохие новости

А вот если будет на фронте куча генераторов, таких, как описал автор, насколько ресурсоёмкие такие бесконечные циклы?

Одно дело на байт-коде вертеть опросы портов, а тут высокоуровневый язык...

Когда их много и один и тот же код многократно вызывается вступают в игру оптимизации в8, во многих случаях это будет почти байткод по производительности. поищите бенчмарки на эту тему и удивитесь, если не знали

Наверное, стоило оговорить в ТЗ, что без глобалов. Кому придёт в голову нахратить чужую переменную? Также про атрибуты класса, будь они хоть протектед, хоть приватные. Если в проекте есть такой саботажник - наверняка, никакие ухищрения не помогут.

А статья интересная, полезная.

Кому придёт в голову нахратить чужую переменную?

Ну, если глобальную переменную назвать "i", то всякое может быть.

Кому придёт в голову нахратить чужую переменную?

Если вы хоть раз ревьюили код джуна, то таких вопросов обычно не возникает;)

\- не ну а че, там как раз лежит то, что мне надо, ну и что что она из другого компонента и там по-другому используется

Кстати тест никогда не будет зелёным, потому что там ошибка. Typo.

Огромное спасибо! Поправили

Для такой мелочи подойдёт решение от AI. Это не напоминает бухгалтера, который все равно из принципа работает на счетах, когда есть Excel.

Поправьте пожалуйста последний листинг WA, туда джаваскрипт пролез (случайный Ctrl-V?)

Спасибо, поправили, и правда издержки копипасты)

const counter = function() {

this.i = (this.i || 0) + 1;

return this.i

};

Этот счётчик считает с единицы.

И это поправили, огромное спасибо!

Sign up to leave a comment.

Articles