文章内容输出来源:拉勾教育 大前端高薪训练营
- 下面关于函数式编程的说法错误的是:(多选题)
A. 函数式编程是一种编程范式,跟面向对象编程是并列关系
B. 函数式编程可以很大程度上让代码可以重用
C. 函数式编程可以很大程度上提高程序的性能
D. 函数式编程中的函数是程序中的函数或者方法
- 答案解析 – CD
C 选项函数式编程不能提高程序的性能,因为大量使用闭包在某种程度上会降低性能(占用内存)
D 函数式编程中的函数不是程序中的函数或者方法,而是数学中的函数
- 函数是一等公民包括:(多选题)
A. 函数可以存储在变量中
B. 函数可以作为参数
C. 函数可以作为返回值
D. 函数可以递归调用
- 答案解析 – ABC
MDN 中关于头等函数(函数是一等公民)的解释只包含前三点
- 下面关于纯函数的说法错误的是:(单选题)
A. 纯函数对于相同的输入永远会得到相同的输出
B. 纯函数中的函数指的是数学中的函数
C. 副作用会让一个函数变得不纯
D. 可以通过某种方式避免副作用的发生
- 答案解析 – D
副作用会让一个函数变得不纯,副作用不可能避免,因为代码难免会依赖外部的配置文件、数据库等,
只能最大程度上控制副作用在可控的范围内发生
- 关于柯里化的描述正确的是:(多选题)
A. 柯里化函数 curry ,也是高阶函数
B. 柯里化函数 curry 内部用到了闭包,对函数的参数做了 “缓存”
C. 柯里化可以把多个参数的函数转换成只有一个参数的函数,通过组合产生功能更强大的函数
D. 柯里化让函数变得更灵活,让函数的粒度更小
- 答案解析 – ABCD
- 关于函数组合说法正确的是:(多选题)
A. 函数可以看做一个处理数据的管道,管道中输入参数 x,在管道中对数据处理后得到结果 y
B. 通过函数组合可以把多个一元函数组合成一个功能更强大的函数
C. 函数组合需要满足结合律
D. 函数组合默认的执行顺序是从右到左
- 答案解析 – ABCD
- 关于函子的说法正确的是:(多选题)
A. 函子是一个特殊的容器(对象),这个容器内部封装一个值,通过 map 传递一个函数对值进行处理
B. MayBe 函子的作用是处理外部的空值情况,防止空值的异常
C. IO 函子内部封装的值是一个函数,把不纯的操作封装到这个函数,不纯的操作交给调用者处理
D. Monad 函子内部封装的值是一个函数(这个函数返回函子),目的是通过 join 方法避免函子嵌套
- 答案解析 – ABCD