- 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.
- 小創客玩轉圖形化編程
- C++面向對象程序設計(微課版)
- Web交互界面設計與制作(微課版)
- PHP+MySQL網站開發技術項目式教程(第2版)
- 實戰低代碼
- 你必須知道的204個Visual C++開發問題
- Java編程技術與項目實戰(第2版)
- 零基礎入門學習Python(第2版)
- C語言程序設計
- Go語言精進之路:從新手到高手的編程思想、方法和技巧(2)
- Getting Started with Eclipse Juno
- 深入淺出Go語言編程
- PhoneGap 4 Mobile Application Development Cookbook
- Elasticsearch Blueprints
- JSP應用與開發技術(第3版)