如果纯函数返回不纯函数,那么它是纯
const fn = endpoint => () => {
console.log(endpoint);
}
从技术上讲fn
是纯粹的吗?
答案 0 :(得分:4)
是的,外部函数是纯函数。除了创建lambda所需的后台机制外,函数的调用不会引起任何副作用(并且,如果算了这些影响,则没有函数会是纯函数,因为至少函数会改变调用堆栈呼叫)。
您可以将此函数调用替换为其内联返回的函数,并且代码的行为相同。
答案 1 :(得分:0)
我不同意@Carcigenicate。如果表达式f
对于每个参照透明表达式f(x)
是参照透明的,则函数x
是纯函数。
这意味着您可以将f(x)
替换为VALUE,并且程序的可观察行为不会改变。 console.log
并非如此。
这与Haskell中的情况有所不同,其中IO
是真实值,而不是副作用语句。