Является ли функция, которая возвращает чистый, независимо от потенциальной операции? - PullRequest
2 голосов
/ 03 мая 2019

Чисто ли getFeedbackThunk?

function setWinTitle(msg) {
    window.document.title = msg;
}

function getFeedbackThunk(msg) {
    return () => setWinTitle(msg);
}

voteButton.onclick = getFeedbackThunk('Thanks for voting!');

Он не взаимодействует с внешним состоянием, а выход всегда определяется входами. Что сбивает с толку, так это то, что цель вывода - вызвать эффект, но я думаю, мы можем сказать, что сама функция чистая.

1 Ответ

0 голосов
/ 03 мая 2019

В этом конкретном примере я бы с вами согласился. Но в целом (то есть с целью намека на оптимизацию кода) нет синтаксической гарантии. В C ++ есть методы const, обеспечивающие чистоту:

// C++ code
class Feedback {
  string state;

  // here the const guarantees not to change the state
  void getFeedbackThunk(string msg) const {
    ...
  }
};

Но AFAIK нет такого постоянного использования в JS.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...