官术网_书友最值得收藏!

Functions as First Class Objects

Saying that functions are first class objects (also: first class citizens) means that you can do everything with functions, that you can do with other objects. For example, you can store a function in a variable, you can pass it to a function, you can print it out, and so on. This is really the key to doing FP: we will often be passing functions as parameters (to other functions) or returning a function as the result of a function call. 

If you have been doing async Ajax calls, you have already been using this feature: a callback is a function that will be called after the Ajax call finishes and is passed as a parameter. Using jQuery, you could write something like:

$.get("some/url", someData, function(result, status) {
// check status, and do something
// with the result
});

The $.get() function receives a callback function as a parameter, and calls it after the result is obtained. 

This is better solved, in a more modern way, by using promises or async/await, but for, but for the sake of our example, the older way is enough. We'll be getting back to promises, though, in section Building Better Containers, of chapter 12Building Better Containers – Functional Data Types, when we discuss Monads; in particular, see section Unexpected Monads: Promises.

Since functions can be stored in variables, you could also write:

var doSomething = function(result, status) {
// check status, and do something
// with the result
};
$.get("some/url", someData, doSomething);

We'll be seeing more examples of this in Chapter 6, Producing Functions – Higher–Order Functions, when we consider HigherOrder Functions.

主站蜘蛛池模板: 青河县| 惠东县| 历史| 铁岭县| 麻栗坡县| 邵东县| 阿拉善盟| 伊春市| 通江县| 鄂州市| 兰州市| 志丹县| 承德市| 三河市| 安西县| 新野县| 札达县| 沙河市| 涪陵区| 会东县| 浏阳市| 来宾市| 拜泉县| 浦县| 湛江市| 会东县| 广安市| 阜平县| 和林格尔县| 凤山县| 云梦县| 托克托县| 北安市| 两当县| 屏东县| 小金县| 苏尼特左旗| 三门峡市| 津南区| 鞍山市| 夹江县|