一等公民的函数

所谓的“一等公民”,指的是函数与其他的数据类型可以同等对待,如存入数组,作为参数等等。。

先看个例子:

const hi = name => `Hi ${name}`;
const greeting = name => hi(name);

这里的对hi这个函数又给与了重新的传参操作,其实大可不必如此,因为hi已经被函数定义过了,在函数编程的思维中,它是个变量,与其他的熟知的变量一样,可以被临时赋值,所以在这里我们可以将该代码简化为

const hi = name => `Hi ${name}`;
const greeting = hi;//直接赋值
greeting("times"); // "Hi times"

是的一旦定义为函数,那么可以不需要编写形参等一系列的复杂的间接层,还有一个好处就是,如果遇到需要加参数的情况下,还需要回头重新编写形参,如果采用函数式编程,这样的情况就可以完全避免,示例如下:

//一般处理方式
httpGet('/post/2', json => renderPost(json));
//需要加上错误的处理方式
httpGet('/post/2', (json, err) => renderPost(json, err));
//以函数式编程的代码
httpGet('/post/2', renderPost); // renderPost 将会在 httpGet 中调用,想要多少参数都行

值得注意的是,在函数式编程的思维中,要格外小心“this”,因为如果一旦this以一等公民的方式调用,会出现很多意想不到的错误

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章