- Mastering JavaScript
- Ved Antani
- 294字
- 2021-07-16 09:31:29
Functions as data
In JavaScript, functions can be assigned to variables, and variables are data. You will shortly see that this is a powerful concept. Let's see the following example:
var say = console.log; say("I can also say things");
In the preceding example, we assigned the familiar console.log()
function to the say variable. Any function can be assigned to a variable as shown in the preceding example. Adding parentheses to the variable will invoke it. Moreover, you can pass functions in other functions as parameters. Study the following example carefully and type it in JS Bin:
var validateDataForAge = function(data) { person = data(); console.log(person); if (person.age <1 || person.age > 99){ return true; }else{ return false; } }; var errorHandlerForAge = function(error) { console.log("Error while processing age"); }; function parseRequest(data,validateData,errorHandler) { var error = validateData(data); if (!error) { console.log("no errors"); } else { errorHandler(); } } var generateDataForScientist = function() { return { name: "Albert Einstein", age : Math.floor(Math.random() * (100 - 1)) + 1, }; }; var generateDataForComposer = function() { return { name: "J S Bach", age : Math.floor(Math.random() * (100 - 1)) + 1, }; }; //parse request parseRequest(generateDataForScientist, validateDataForAge, errorHandlerForAge); parseRequest(generateDataForComposer, validateDataForAge, errorHandlerForAge);
In this example, we are passing functions as parameters to a parseRequest()
function. We are passing different functions for two different calls, generateDataForScientist
and generateDataForComposers
, while the other two functions remain the same. You can observe that we defined a generic parseRequest()
. It takes three functions as arguments, which are responsible for stitching together the specifics: the data, validator, and error handler. The parseRequest()
function is fully extensible and customizable, and because it will be invoked by every request, there is a single, clean debugging point. I am sure that you have started to appreciate the incredible power that JavaScript functions provide.
- Microsoft Exchange Server PowerShell Cookbook(Third Edition)
- Android開發精要
- DevOps入門與實踐
- 精通軟件性能測試與LoadRunner實戰(第2版)
- Yocto for Raspberry Pi
- Spring+Spring MVC+MyBatis整合開發實戰
- Python深度學習:模型、方法與實現
- Learning jQuery(Fourth Edition)
- Node學習指南(第2版)
- 深度學習程序設計實戰
- 從零開始學算法:基于Python
- Unity 3D UI Essentials
- Mastering Unity 2017 Game Development with C#(Second Edition)
- 自己動手做智能產品:嵌入式JavaScript實現
- 測試架構師修煉之道:從測試工程師到測試架構師(第2版)