在前端中 【函数】【API】【方法】有什么区别吗?
函数:计算领域概念,是一组运算或者逻辑的集合。
方法:面向对象领域的概念,是一个对象的一个功能。
API:系统层面概念,描述一个系统能够对外提供什么服务。
本质只是在不同语境下使用的不同词汇而已。前端环境下,因为函数Function是一等公民,所以大部分方法即函数,大部分API也都是函数。但是如你所想,反过来不一定成立。前端很少一部分API不是函数,而是一个对象、甚至是一个合作规范、或者是数据流推送通道等等,这个全看怎么设计。
我补充一个函数和方法很不一样的地方。
首先要说明一件事,函数这个词在【函数式编程】里特别强调,它被【函数式编程】定义了一个非常特别的,和方法不一样的特性:
它的结果只受输入参数的影响,如果输入参数相同,则无论运行多少次,函数的输出结果应该是完全一样的。即函数的输出只受到输入的影响,这一点和现实数学里的函数是等价的,几乎可以认为函数编程里的函数就是映射数学里的函数。
而方法在这个问题上则不一样,因为【方法】这个词语的语境一般出现在【对象式编程】。而对象一般有自己的属性值,而属于对象的方法可以访问这些属性值,甚至可以用这些属性参与运算。这导致一个问题,方法输出的结果不仅仅受到入参的影响,因为它存在隐式输入(那些成员属性)
以上是【函数】和【方法】在思路上最大的不同,并且,偏向函数的人,非常积极的反对【方法】这种带有隐式输入条件的应用方式,认为这会带来额外的心智负担和混乱。
所以,从上可以看出,不管是函数还是方法,都只是封装起来的一小段可供调用的代码,区别不过是函数的输入只能来源于参数,而方法则可以隐式的把其所在对象或父对象的成员属性作为输入条件
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答5.2k 阅读✓ 已解决
1 回答3.4k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
“函数”是英文 Function 的直译,跟数学中的函数是同一个单词。有输入、有输出、能将特定输入转换为特定输出的,就叫函数。(void 也是一种输入输出,所以不要纠结没有入参或者没有返回值的怎么算输入输出)
“方法”是英文 Method 的直译。它通常出现在面向对象编程中。面向对象中我们会描述一个对象拥有某些特征(即属性)或行为(即方法)。
但在编程语境下二者通常可以互相替换,哪怕是英语母语者也不会去咬文嚼字纠结这个.
API 就稍有不同了,它是 Application Programming Interface(应用程序编程接口)的缩写,它实际是封装好的一组代码,可以供开发者在无需了解软件或硬件内部工作细节的情况下,实现某些目的。
所以严格意义上来说,API 是“对外”的。你用别人写好的一个库里对外提供的一组方法,它们可以被称为 API;你请求后端提供的某个 URL,它们可以被称为 API;你封装了一个工具类,其他模块引用这个工具类里的方法,它们可以被称为 API;但你自己自定义了一个对象、里面包含俩方法,其中 A 方法会调用 B 方法,那这就不叫 API 了。