Anonymous functions are functions that do not have a name. They are commonly used as arguments to other functions or methods, such as in event handlers, callbacks, and immediately invoked function expressions (IIFEs).
They are a key part of functional programming and allow for concise and readable code.
### Why Use Anonymous Functions?
1. **Conciseness**: Anonymous functions provide a shorthand for defining functionality without the need for a separate named function, reducing verbosity.
2. **Encapsulation**: They are useful for encapsulating code that does not need to be reused elsewhere, keeping the global namespace clean.
3. **Higher-Order Functions**: They are often used with higher-order functions, such as `map`, `filter`, and `reduce`, where the function is passed as an argument.
To understand and implement anonymous functions in various scenarios including:
event handling
callbacks
higher-order functions. (HOF)
Setup
1. Ensure you have a working JavaScript environment. You can use any modern browser or Node.js.
2. Create a new directory for your lab and open it in your code editor (e.g., Visual Studio Code).
2. **Create a JavaScript file (`script.js`)**:
// Add event listener with an anonymous function
document.getElementById("btn").addEventListener("click", function() {
console.log("Button clicked!");
});
```
3. **Run the HTML file**:
- Open `index.html` in your browser.
- Click the button and observe the console output.
### Part 2: Using Anonymous Functions as Callbacks
1. **Create a JavaScript file (`callbacks.js`)**:
```javascript
// Using setTimeout with an anonymous function
setTimeout(function() {
console.log("Time's up!");
}, 1000);
// Using setInterval with an anonymous function
let count = 0;
const intervalId = setInterval(function() {
count++;
console.log(`Count: ${count}`);
if (count === 5) {
clearInterval(intervalId);
}
}, 1000);
```
2. **Run the JavaScript file**:
- If using Node.js, run the file in the terminal:
```sh
node callbacks.js
```
### Part 3: Higher-Order Functions with Anonymous Functions
// Using map with an anonymous function
const doubled = numbers.map(function(num) {
return num * 2;
});
console.log("Doubled:", doubled); // [2, 4, 6, 8, 10]
// Using filter with an anonymous function
const evenNumbers = numbers.filter(function(num) {
return num % 2 === 0;
});
console.log("Even Numbers:", evenNumbers); // [2, 4]
// Using reduce with an anonymous function
const sum = numbers.reduce(function(total, num) {
return total + num;
}, 0);
console.log("Sum:", sum); // 15
```
2. **Run the JavaScript file**:
- If using Node.js, run the file in the terminal:
```sh
node higherOrderFunctions.js
```
### Summary of Anonymous Functions
Anonymous functions are versatile and useful in many scenarios where a quick, one-time-use function is needed. They help to keep code concise and maintainable, especially when working with higher-order functions and event-driven programming.
### Knowledge Testing Activity
1. **Create a JavaScript file (`knowledgeTest.js`)**:
- Define an array of students with their names and grades.
- Use higher-order functions (`map`, `filter`, `reduce`) with anonymous functions to:
- Create an array of student names.
- Filter out students with grades above a certain threshold.
- Calculate the average grade of the students.
// 1. Create an array of student names using map with an anonymous function
const studentNames = students.map(function(student) {
return student.name;
});
console.log("Student Names:", studentNames);
// 2. Filter out students with grades above 80 using filter with an anonymous function
const highGrades = students.filter(function(student) {
return student.grade > 80;
});
console.log("High Grades:", highGrades);
// 3. Calculate the average grade using reduce with an anonymous function
const totalGrades = students.reduce(function(total, student) {
return total + student.grade;
}, 0);
const averageGrade = totalGrades / students.length;
console.log("Average Grade:", averageGrade);
```
3. **Run the JavaScript file**:
- If using Node.js, run the file in the terminal:
```sh
node knowledgeTest.js
```
### Conclusion
This lab demonstrates the use of anonymous functions in various contexts such as event handling, callbacks, and higher-order functions. Understanding and effectively using anonymous functions is essential for writing concise and maintainable JavaScript code, particularly in functional programming and event-driven environments.
Want to print your doc? This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (