lecture-2-一等公民
更新时间:2024-04-08阅读整篇大约3分钟
头等函数与一等公民
什么是一等公民
如果一门编程语言的某个类型可以被当作变量一样使用,则被称为一等公民
函数被称为一等公民是指:在这门语言中,函数可以被当作变量一样被使用,函数可以和其他数据类型拥有一样的地位(例如字符串、数字、对象),可以被赋值,作为参数传递,作为结果返回,甚至可以嵌套在其他函数中。在JavaScript中,字符串、数字、对象、函数都可以被成为一等公民。要知道在其他编程语言中,函数不一定是一等公民(例如Java8之前的版本)
什么是头等函数
如果一门编程语言将函数当做一等公民,那么这门语言被称作拥有头等函数,被当成一等公民对待的函数被称为头等函数
JS中一等公民的本质
在js中函数的本质是一个对象,他并不是一种单独的类型,在Javascript中有且仅有以下几种类型
- Undefined
- Null
- Boolean
- Number
- String
- Symbol
- Object
- BigInt
对于Function还有Array、Map、Date等都是作为Object下的一类
JS头等函数的本质
既然函数也是对象,那么对象能干的事,函数也能干,例如函数能赋值给变量、函数能作为函数参数传递、函数能作为返回值返回,所以不难看出,在JS中头等函数的本质是头等对象,JS函数的本质也即是可执行的对象
函数作为一等公民的意义
函数作为一等公民意味着在JS的世界中,函数具有最高的自由度,这也表明了,函数能办到几乎所有的事,这也使得以函数为基本单位构建应用程序成为可能
由此,我们也可以断言,任何语言如果想要实现对函数式编程范式的支持,必须将函数放在一等公民的位置上