11.2. Anonymous Functions¶
You already know one method for creating a function:
1 2 3 4 5 | function myFunction(parameter1, parameter2,..., parameterN) {
// function body
}
|
A function defined in this way is a named function (myFunction
, in the example above).
Many programming languages, including JavaScript, allow us to create anonymous functions, which do not have names. We can create an anonymous function by simply leaving off the function name when defining it:
1 2 3 4 5 | function (parameter1, parameter2,..., parameterN) {
// function body
}
|
You might be asking yourself, How do I call a function if it doesn't have a name?! Good question. Let's address that now.
11.2.1. Anonymous Function Variables¶
Anonymous functions are often assigned to variables when they are created, which allows them to be called using the variable's name.
Example
Let's create and use a simple anonymous function that returns the sum of two numbers.
1 2 3 4 5 | let add = function(a, b) {
return a + b;
};
console.log(add(1, 1));
|
Console Output
2
The variable add
refers to the anonymous function created on lines 1 through 3. We call the function using the variable name, since the function doesn't have a name.
The visual analogy here is the same as that of a variable referring to a named function.
Warning
Like other variable declarations, an assignment statement using an anonymous function should be terminated by a semi-colon, ;
. This is easy to overlook, since named functions do not end with a semi-colon.
11.2.2. Check Your Understanding¶
Question
Convert the following named function to an anonymous function that is stored in a variable.
1 2 3 4 5 | function reverse(str) {
let lettersArray = str.split('');
let reversedLettersArray = lettersArray.reverse();
return reversedLettersArray.join('');
}
|
Question
Consider the code sample below, which declares an anonymous function beginning on line 1.
1 2 3 4 5 | let f1 = function(str) {
return str + str;
};
let f2 = f1;
|
Which of the following are valid ways of invoking the anonymous
function with the argument "abcd"
? (Choose all that apply.)
f1("abcd");
function("abcd");
f2("abcd");
It is not possible to invoke the anonymous function, since it doesn’t have a name.
Question
Complete the following code snippet so that it logs an error message
if userInput
is negative.
1 2 3 4 5 6 7 | let logger = function(errorMsg) {
console.log("ERROR: " + errorMsg);
};
if (userInput < 0) {
____________("Invalid input");
}
|