不管潜在的操作如何,函数是否会返回纯重函数?

时间:2019-05-03 08:25:36

标签: javascript functional-programming

getFeedbackThunk是否纯净?

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

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

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

它不与外部状态交互,并且输出始终由输入确定。令人困惑的是,输出的目的是引起效果,但是我认为我们可以说函数本身是纯净的。

1 个答案:

答案 0 :(得分:0)

在这个特定示例中,我同意你的看法。但是总的来说(即出于提示代码优化的目的)没有语法保证。在C ++中,有一些强制执行纯度的const方法:

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

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

但是AFAIK在JS中没有这样的const用法。