- JavaScript:Moving to ES2015
- Ved Antani Simon Timms Narayan Prusty
- 294字
- 2021-07-09 19:07:32
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.
- Puppet 4 Essentials(Second Edition)
- 小程序?qū)崙?zhàn)視頻課:微信小程序開發(fā)全案精講
- 圖解Java數(shù)據(jù)結(jié)構(gòu)與算法(微課視頻版)
- 跟老齊學(xué)Python:輕松入門
- Lua程序設(shè)計(jì)(第4版)
- Windows Server 2012 Unified Remote Access Planning and Deployment
- 手把手教你學(xué)C語言
- Scala編程實(shí)戰(zhàn)(原書第2版)
- Getting Started with LLVM Core Libraries
- 精通Python自動(dòng)化編程
- Arduino Wearable Projects
- 少年小魚的魔法之旅:神奇的Python
- Python程序設(shè)計(jì)案例教程
- Mastering Citrix? XenDesktop?
- Hands-On GUI Application Development in Go