大家好!今天我要讨论的是编程中一个非常著名的概念(一等函数)。已经有很多关于这个主题的资源,但本文仍然有一些新内容,我花时间简化了一些事情以便更好地理解。
根据维基百科,如果一种编程语言将函数视为一等公民,则称该语言具有一等函数。
这意味着该语言支持将函数作为参数传递给其他函数,将它们作为不同函数的值返回,将它们分配给变量,或将它们存储在数据结构中。
在 Javascript 中,事情是这样进行的,因为函数只是另一种类型的对象。如果您是这个概念的新手,您会觉得它很尴尬,特别是如果您来自不同的编程背景,但现在,请先考虑一下。由于对象是值,函数也是,Javascript 将它们视为一个。这开辟了一种编写更灵活代码的新方法,因为我们可以将函数存储在变量中或添加属性。
我已将要点分解为项目符号列表以使事情变得更容易。为了更好地理解一等函数,这里有几点来澄清它。
使用一流函数可以实现的一件事是将函数作为参数传递;我们可以在很多 Javascript 代码中看到这种代码风格。例如 addEventListener 方法,它接收一个 Javascript 回调函数作为参数,例如
button.addEventListener('click', function(){ console.log('hellloooo') })
在前面的代码片段中,我们观察到 addEventListener 接收两个参数,其中第二个函数是回调函数,将在单击按钮后调用。
我们可以从 Javascript 中的另一个函数返回函数; Javascript 中的许多对象都有方法,例如,javascript 中的数组函数。此外,我们还有函数的方法,例如call()
、 bind()
、 apply()
Javascript 方法都可以在 Javascript 函数上调用。
function count(){ Let counter = 0; return function(){ counter++ } }
count 函数返回了另一个我们更新计数器的函数。
在 Javascript 中,我们可以将函数存储在变量甚至属性中,就像您对 Javascript 值取平均值一样。
Const multiply = (a,b) => a * b
上面的Javascript箭头函数保存在multiply变量中,可以调用
以这种方式乘以(3,5)。
一等函数的主要意义之一是它们使我们可以编写高阶函数。
这要么是一个接收另一个函数作为参数的函数,要么是一个返回新函数的函数。这是唯一可能的,因为一流的功能。
button.addEventListener('click', function(){ console.log('hellloooo') })
这里的addEventListener()
是高阶函数的一个例子,因为它接收另一个函数作为参数。它通常指的是 Javascript 回调函数,因为它是在 HOF 运行后调用的。高阶函数和一等函数之间的主要区别在于,一等函数是一种编程语言具有或不具有的特性,它只是意味着所有函数都是值。
总之,要知道在实践中没有一流的功能;这只是一个概念。但是,由于该语言支持一等函数,因此在实践中可以使用高阶函数。