【8.9】nodejs 原理学习 - 异步编程(1) 函数式编程

244 阅读2分钟

这是我参与8月更文挑战的第8天,活动详情查看:8月更文挑战

继续学习 nodejs 的核心知识,目前是按照 深入浅出 nodejs 这本书进行学习和练习的,主要原因是这本书非常经典,另外是中文的,理解起来更不容易出差错。

下面的内容是对 深入浅出 nodejs 这本书的第四章 - 异步编程的学习笔记和练习

书的电子版地址

函数式编程

JavaScript 是函数的一等公民,使用上非常自由,可以直接调用它,或者作为参数和返回值。下面来介绍一下函数式编程的方式:

高阶函数

高阶函数是既可以把函数作为参数、也可以把函数作为返回值的函数。

高阶函数形成了一种后续传递风格的结果接收方式,将重点转移到了回调函数中。

数组的 sort 方法,就是一个典型的高阶函数,sort 方法的参数是一个函数,可以通过修改函数的内容,自定义排序的方式

const arr = [1,1,2,2,3];
arr.sort((a, b) => {
    return b - a;
})

偏函数用法

文章中的解释不太好理解,我的理解是从工厂函数创建另一些函数的方式。

比如我们判断变量类型,可以这样写:

const isString = (obj) => {
    return Object.prototype.toString.call(obj) === "[object String]";
}
const isFunction = (obj) => {
    return Object.prototype.toString.call(obj) === "[object Function]";
}

但是这样,如果类似的判断多了,中间的部分就会比较冗余,这时候我们可以用一个工厂函数 isType 来做:

const isType = (type) => {
    return (obj) => {
        return Object.prototype.toString.call(obj) === `[object ${type}]`
    }
}
const isString = isType('String');
const isFunction = isType('Function');

我们通过 isType 这个工厂函数,通过赋予 type 的值,批量的创建了一些类似的函数 isString、isFunction 等。

这种通过制定部分参数,产生一个新的定制函数的方式,就是偏函数的写法。

以上是函数式编程的介绍部分,欢迎评论和点赞~