- 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.
- Python編程自學(xué)手冊
- ExtGWT Rich Internet Application Cookbook
- Mastering ServiceStack
- ASP.NET Core Essentials
- C語言程序設(shè)計
- 愛上micro:bit
- 現(xiàn)代C++編程實戰(zhàn):132個核心技巧示例(原書第2版)
- 軟件項目管理實用教程
- JavaScript應(yīng)用開發(fā)實踐指南
- 創(chuàng)意UI:Photoshop玩轉(zhuǎn)APP設(shè)計
- Building Dynamics CRM 2015 Dashboards with Power BI
- Tableau Desktop可視化高級應(yīng)用
- .NET 4.0面向?qū)ο缶幊搪劊簯?yīng)用篇
- INSTANT Apache ServiceMix How-to
- jQuery從入門到精通(微課精編版)