函数式编程纯函数理解

123 阅读1分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第21天,点击查看活动详情

对于大多数开发人员来说,在 JavaScript 中使用函数式编程思想似乎更容易和更酷。为什么?因为众所周知,JavaScript 是一种基于原型的语言 —— “原型继承”、“this”、“setPropertyOf” 和其他东西,确实太令人困惑了,并且很多时候会产生误解。

尽管如此,与在基于原型的风格中使用错误的 “this” 绑定相比,我们在 JavaScript 中有函数式方法,这使事情变得更简单,错误也更少。函数式方法更容易维护。

使用函数式方法的 JavaScript 开发人员在社区有很多,大多数库都允许我们在项目中使用这种风格。这意味着当你遇到问题时,在 StackOverflow 或其他任何地方都可以获取帮助。

JavaScript 中的函数代码就像下面这样:

const sayHello = function(name) {
  return `Hello ${name}`;
}

sayHello('Victor');

# => Hello Victor

我们声明了一个接受参数 name 的函数,当我们调用该函数时,如果我们的参数接受了 'Victor',它将返回一个字符串 'Hello Victor'。这是一种在编写函数方面的代码时表达自己的更清晰、更简单的方法。

要更多地了解 JavaScript 中的函数式编程,有些概念非常重要,我们必须首先学习这些概念:纯函数、高阶函数、不变性、一等函数等等。我们也将在后面讨论它们。

函数式编程的主要目标,可以说就是避免副作用和使用纯函数。避免副作用意味着我们的函数应该只通过接收参数(输入)并处理它们来计算。所以,我们的函数应该是纯函数。让我们看一个有副作用的非纯函数的例子:

let surname = 'Jonah';

const sayHi = function() {
  return `Hi ${surname}`;
}

看看上面代码中我们的函数,它没有输入(参数),但是从函数外部接收作为全局变量的数据。这产生了副作用的可能性。

纯函数看起来像下面的代码:

const sayHi = function(surname) {
  return `Hi ${surname}`;
}

我们的函数只关心输入的 surname,并且只会处理它。这是一个非常纯粹的函数。

这也是函数式编程的主要和最重要的概念。