Javascript是一种函数式编程语言吗?

hvg*_*des 132 javascript functional-programming terminology

仅仅因为函数是第一类对象,有闭包和高阶函数,Javascript是否应该被称为函数式编程语言?我认为它缺少的主要功能是纯函数,并且它不像其他函数式语言那样"感觉",比如lisp(虽然这不是一个很好的理由,它不是一个功能性的语言......)

mis*_*tor 175

重复我自己对类似问题的回答,

功能编程语言没有公认的定义.

如果将函数式语言定义为支持第一类函数和lambdas的语言,那么是的,JavaScript*是一种函数式语言.

如果您还考虑了支持不变性,代数数据类型,模式匹配,部分应用等因素,那么,JavaScript*不是*函数式语言.


我建议您阅读以下相关博客文章(以及下面的评论):

  • +1指出没有通用的定义,并带来一些JS没有的原型功能语言功能的例子. (28认同)
  • @OpenLearner,部分应用程序几乎支持我能想到的每种语言,甚至是C.无论如何,对于"支持"的某种定义.JS的情况也不例外.关键在于部分应用程序是否容易使用并且是该语言的第一类应用程序.在JS中,它不是.如果你对我的意思很好奇,请看看OCaml或Haskell. (2认同)

Nik*_*chi 26

我会说这是一种多范式的语言.

编辑:这是多范式,包括功能结构.

  • 但这并没有回答它是否**也是**功能的问题.多范式意味着支持多种范式.这些范式是函数式编程之一吗? (5认同)

shu*_*alo 15

如果你将"函数式编程"这个术语拉伸并扭曲到哲学讨论的角度,这个问题可能会再次开放.然而,那么你最终会得到一些有用的问题,例如"C++真的是一种编程语言"吗?

每日更多问题的答案是"不".

函数式编程意味着程序被概念化为函数的评估,而不是控制流.代码是函数的描述,并没有控制流的固有概念.

JavaScript有一个控制流程,并被概念化为命令式语言.从设计目标来看,它显然不是一种功能语言.

  • JavaScript和C++提供相同的函数编程便利性的说法当然是错误的.JavaScript使函数式编程变得非常简单和简单,而不必使用C++中必须经历的所有混乱构造来实现相同的功能.有许多优秀的C++程序员突出地说C++中的功能编程实际上并不受鼓励,但是关于在JavaScript中进行函数式编程的文章比比皆是 (3认同)
  • 它支持函数式编程,就像C++一样,如果你自己为此编写适当的基础 - 就像你可以在Haskell中模拟命令式语法一样有点工作.然而,JavaScript的语法导致它被认为是一个工作流而不是一个函数的评估.出于这个原因,我(或大多数功能程序员)认为应用术语"功能"过于广泛. (2认同)

Chu*_*uck 8

这些天来,"函数式编程"这个术语过度使用它几乎是无用的.有两个主要含义:

  1. 拥有一流的功能
    • Javascript就是这个!
  2. 基于lambda演算中使用的函数,重点是避免持久的可变状态(通常用传递给函数的参数替换它)
    • 通常写的,Javascript不是远程的!

选择你的意思然后问题是可以回答的.