“第一类对象”是什么意思?

2022-08-30 02:43:11

最近的一个问题中,我收到了一些建议,除其他外,要讨论JavaScript的方面,其中函数是“第一类”对象。在这种情况下,“第一类”与其他对象相比是什么意思?

编辑(Jörg W Mittag):精确重复:“什么是一流编程结构?


答案 1

引用维基百科的话:

在计算机科学中,如果编程语言将函数视为一等对象,则称为支持一等函数(或函数文字)。具体而言,这意味着该语言支持在程序执行期间构造新函数,将它们存储在数据结构中,将它们作为参数传递给其他函数,并将它们作为其他函数的值返回。

此页面还很好地说明了这一点:

真的,就像任何其他变量一样

  • 函数是 Object 类型的实例
  • 函数可以具有属性,并具有返回到其构造函数方法的链接
  • 您可以将函数存储在变量中
  • 您可以将该函数作为参数传递给另一个函数
  • 您可以从函数返回函数

还看了TrayMan的评论,有趣...


答案 2

编程语言中的“一流函数”概念是由英国计算机科学家Christopher Strachey在1960年代引入的。这个原则最著名的表述可能是Gerald Jay Sussman和Harry Abelson的《计算机程序的结构与解释》:

  • 它们可以由变量命名。
  • 它们可以作为参数传递给过程。
  • 它们可以作为程序的结果返回。
  • 它们可能包含在数据结构中。

基本上,这意味着你可以用函数做你可以用编程语言中的所有其他元素做的所有事情。因此,在JavaScript的情况下,这意味着你可以用整数,字符串,数组或任何其他类型的对象做的所有事情,你也可以用函数做。