【发布时间】:2022-04-30 04:59:19
【问题描述】:
我了解到纯函数是一个不会改变全局状态的函数。如果这是真的,函数内的函数可以改变外部函数的状态,并且仍然是纯的,对吗?
例子:
function func1() {
let name = "My Name"
func2()
function func2() {
// alter name here.
}
}
在上面的例子中,func2 仍然是纯的,因为它不使用任何全局状态。
我是这么看的,但是我的工作同事认为func2 不纯,应该写成这样:
function func1() {
let name = "My Name"
func2(name)
function func2(name) {
// use name here.
}
}
这不好,因为:
- 如果 v8 不对此进行优化,CPU 将运行更多指令
- 阴影是一种不好的做法
问题是:当我们谈论函数中的函数时,纯函数到底是什么?
【问题讨论】:
-
使用 != 改变。你说的是哪一个?
-
@Bergi 我想知道你对这两件事的看法。
标签: functional-programming purely-functional pure-function