Size: a a a

JavaScript — русскоговорящее сообщество

2020 November 18

E

Evgeniy 🍀 in JavaScript — русскоговорящее сообщество
Anton👨🏻‍💻
Как вы считаете, это чистая функция?

function pureFn (start) {
 let acc = start;
 
 for (let i = 0, i < 10; i += 1) {
   acc += i;
 }
 
 return acc;
}
Конечно, а в чем вопрос?
источник

AP

Anton Permyakov in JavaScript — русскоговорящее сообщество
Anton👨🏻‍💻
Как вы считаете, это чистая функция?

function pureFn (start) {
 let acc = start;
 
 for (let i = 0, i < 10; i += 1) {
   acc += i;
 }
 
 return acc;
}
да, если не учитывать опечатку в цикле
источник

Ю

Юрий in JavaScript — русскоговорящее сообщество
Acc и start ссылаются на один объект в памяти?
источник

SS

Sergiy Shatunov in JavaScript — русскоговорящее сообщество
Юрий
Acc и start ссылаются на один объект в памяти?
это скаляры
источник

SS

Sergiy Shatunov in JavaScript — русскоговорящее сообщество
хотя... если start.valueOf имеет побочные действия, то функция может быть и не чистой
источник

A

Anton👨🏻‍💻 in JavaScript — русскоговорящее сообщество
Да так, интересно мнение сообщества. Наличие цикла for или while в теле функции делает её "не чистой" 💁‍♂
источник

A

Anton👨🏻‍💻 in JavaScript — русскоговорящее сообщество
Конечно, а в чем вопрос?
источник

SS

Sergiy Shatunov in JavaScript — русскоговорящее сообщество
чистота это отсутствие побочных влияний
источник

SS

Sergiy Shatunov in JavaScript — русскоговорящее сообщество
циклы тут вообще никаким боком
источник

A

Alex in JavaScript — русскоговорящее сообщество
xahise
$("[data-qa='pager-next']")
👍
источник

A

Anton👨🏻‍💻 in JavaScript — русскоговорящее сообщество
Sergiy Shatunov
циклы тут вообще никаким боком
С помощью цикла for мутируется локальная статическая переменная что нарушает одно из  правил частоты функции
источник

SS

Sergiy Shatunov in JavaScript — русскоговорящее сообщество
Anton👨🏻‍💻
С помощью цикла for мутируется локальная статическая переменная что нарушает одно из  правил частоты функции
она локальная, во вне не лезет
источник

SS

Sergiy Shatunov in JavaScript — русскоговорящее сообщество
или ты хаскелем начал упарываться?
источник

A

Anton👨🏻‍💻 in JavaScript — русскоговорящее сообщество
Sergiy Shatunov
или ты хаскелем начал упарываться?
Причем тут хаскель? Чистые функции предполагают работу с иммутабельными переменными, цикл for сам по себе не чистый и делает мутацию acc, которую возвращает "чистая" функция
источник

SS

Sergiy Shatunov in JavaScript — русскоговорящее сообщество
Anton👨🏻‍💻
Причем тут хаскель? Чистые функции предполагают работу с иммутабельными переменными, цикл for сам по себе не чистый и делает мутацию acc, которую возвращает "чистая" функция
что внутри не важно, во вне ничего не меняется, значит функция чистая
источник

SS

Sergiy Shatunov in JavaScript — русскоговорящее сообщество
аргументы не должны модифицироваться, this не должен модифицироваться, переменные из внешнего скопа не доложны модифицироваться, не должно быть операций вывода
источник

A

Anton👨🏻‍💻 in JavaScript — русскоговорящее сообщество
Sergiy Shatunov
аргументы не должны модифицироваться, this не должен модифицироваться, переменные из внешнего скопа не доложны модифицироваться, не должно быть операций вывода
И статические локальные переменные тоже :)
источник

SS

Sergiy Shatunov in JavaScript — русскоговорящее сообщество
Anton👨🏻‍💻
И статические локальные переменные тоже :)
это необязательно
источник

A

Anton👨🏻‍💻 in JavaScript — русскоговорящее сообщество
Sergiy Shatunov
это необязательно
По правилам обязательно 🤷‍♂
источник

A

Anton👨🏻‍💻 in JavaScript — русскоговорящее сообщество
Даже локальные переменные не должны мутироваться
источник