javascript中功能编程基础知识介绍

51 阅读3分钟

在这篇文章中,我们将讨论与函数式编程相关的不同编程范式,以及如何在javascript中实现它。

函数式编程

它是处理计算和数学应用的编程类型之一。Haskell、Clojure、Python、Erlang和Scala是完整的函数式编程语言。Javascript不是严格意义上的函数式编程语言,但它支持其中的一些技术。

它是一个函数作为其他函数的参数,对数组或集合中的每个元素执行的又一种模式。为了实现这一点,Javascript引入了第一类对象/公民。

Javascript已经用数组和字符串方法实现了这种模式,比如forEach方法、过滤器、every()、Map()方法。这些方法对每个元素进行迭代,并在每个元素上应用函数。

我们将在接下来的章节中看到一些例子
函数也是javascript中的对象
函数也包含属性

让我们看看简单的函数创建

console.log(testmethod); // returns function code  
console.log(testmethod.name); // returns testmethod  
 function testmethod() {  
    console.log('Howdie');  
  
}

运行aboe代码后,它只是返回函数。让我们看看
函数也有属性,testmethod.name打印出函数的名称。

第一类函数

什么是第一类函数?

在任何编程中,如果函数可以和变量一样被处理,那么第一类函数就被称为函数。

这意味着函数被保存为变量,作为参数传递给函数,并从函数中返回。

这也被称为Javascript的第一等公民或第一等对象

我们将看到详细的教程,使用函数等同于使用变量,例子如下

  • 函数可以被分配给变量/常量/对象/数组
  • 函数可以作为参数传递给一个函数
  • 函数可以从一个函数中返回

函数保存到变量/常量/对象/数组中

这里我们把anonyms函数分配给了变量。我们用这个变量调用函数。命名的函数也可以这样调用。在javascript中,函数和变量/值的处理是一样的
函数分配给变量
函数也可以分配给变量

let functionVariable = function method() {}  

赋值给常数
该函数也可以赋值给常数。

let functionVariable = function method() {}  
const function1 = function() {  
   console.log("function printed");  
}  
function1();  

函数赋值给对象
这是一个将函数像变量一样赋值或存储在对象中的例子。

let obj = { method : function(){} }  

函数保存到数组
这是一个将函数像元素一样保存在数组中的语法。

myarray.push(function method() {})  

作为一个函数参数传递给其他函数

这个例子,将一个函数作为参数传递给函数 这里函数2作为参数传递给显示函数 function2是一个回调函数

function function2() {  
   return "function2 ";  
}  
function display(helloMessage, name) {  
  console.log(function2() + name);  
}  
display(function2);  

函数返回函数像一个变量值

function mainfunction() {  
    return function(){  
 return "return function as value"}  
}  

从以上的函数例子中,我们可以说javascript中的函数被当作一个变量,我们可以很容易地说是第一等公民。

高阶函数是将一个函数作为参数,并将该函数作为参数返回的函数。

在函数式编程中,数据是不可变的

在函数式编程中,状态或数据是不可改变的,这意味着不能更新它。

对于一个变量来说。

如果你想改变一个变量中的数据,你需要创建一个新的变量。为了实现这一点,在声明中使用const关键字

对于数组

你需要创建一个新的数组并连接现有的数组,你可以使用Object.assign()方法或spread operator来实现这个目的。

对于对象

对象中的数据永远不会被改变,所以你需要使用Object.assign来克隆对象并更新它。

在函数式编程中,数据是不会被改变的,你需要创建一个数据的副本来改变它。

函数提供了数据的拷贝,并且支持javascript本地的map和reduce方法来返回现有数据的拷贝/创建。