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

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.

主站蜘蛛池模板: 景德镇市| 博兴县| 新源县| 岳普湖县| 绥德县| 嘉定区| 堆龙德庆县| 门源| 仁化县| 靖宇县| 会理县| 诸暨市| 平塘县| 靖宇县| 绥芬河市| 咸宁市| 新兴县| 会理县| 石门县| 新丰县| 荔浦县| 沐川县| 西乡县| 广灵县| 两当县| 鄂托克旗| 讷河市| 长垣县| 肇庆市| 顺昌县| 淮北市| 旌德县| 江源县| 恭城| 奈曼旗| 无极县| 久治县| 班戈县| 仙桃市| 桦甸市| 武陟县|