Chapter 6: Functions and Modular Code
Understand how to create functions in JavaScript, making your code reusable and more modular.
In this chapter, we’ll explore functions in JavaScript. Functions allow you to group code into reusable blocks, helping to make your code modular, organized, and efficient. Once you define a function, you can call it as many times as needed, reducing duplication.
Defining a Function
Functions are defined using the function
keyword, followed by the function name and a set of parentheses. Here’s a basic example:
// Function definition
function greet() {
console.log("Hello, world!");
}
// Calling the function
greet();
In this example, greet()
is a function that prints "Hello, world!" to the console. The function is called with greet();
, which runs its code block.
Function Parameters and Arguments
Functions can accept input values called parameters, allowing you to pass data into the function. When calling the function, these values are known as arguments.
// Function with parameters
function greetUser(name) {
console.log("Hello, " + name + "!");
}
// Calling the function with an argument
greetUser("Alice"); // Outputs: Hello, Alice!
In this example, name
is a parameter that receives the value "Alice" as an argument when greetUser("Alice")
is called.
Function Return Values
Functions can return values to the calling code using the return
statement. This allows functions to produce output that can be stored or used elsewhere.
// Function with a return value
function add(a, b) {
return a + b;
}
let result = add(3, 4);
console.log(result); // Outputs: 7
Here, the add
function takes two parameters, adds them together, and returns the result. The returned value is stored in result
and then printed to the console.
Function Expressions
Functions can also be defined as expressions, where the function is assigned to a variable. This is called a function expression:
// Function expression
const multiply = function(a, b) {
return a * b;
};
console.log(multiply(5, 6)); // Outputs: 30
In this example, multiply
is a variable holding a function that multiplies two numbers and returns the result. This function is called with multiply(5, 6)
.
Arrow Functions
Arrow functions provide a concise syntax for writing functions and are often used for simpler functions. Here’s the basic syntax:
// Arrow function
const subtract = (a, b) => a - b;
console.log(subtract(10, 4)); // Outputs: 6
In this example, subtract
is an arrow function that takes two parameters and returns their difference. Arrow functions are especially useful for short functions and can make your code more concise.
Scope of Variables in Functions
Variables declared within a function are local to that function and cannot be accessed outside of it. This is known as function scope:
// Variable scope in functions
function showMessage() {
let message = "Hello!";
console.log(message);
}
showMessage(); // Outputs: Hello!
console.log(message); // Error: message is not defined
In this example, message
is defined within showMessage()
and cannot be accessed outside, illustrating local scope.
Using Functions for Modular Code
Functions allow you to break down complex tasks into smaller, manageable parts, creating more modular and reusable code. For example:
// Modular code with functions
function calculateArea(width, height) {
return width * height;
}
function displayArea(width, height) {
console.log("Area:", calculateArea(width, height));
}
displayArea(5, 10); // Outputs: Area: 50
In this example, the task of calculating and displaying an area is divided into two functions, each responsible for a specific part of the task.
Summary and Next Steps
In this chapter, we explored functions in JavaScript, including function declarations, parameters, return values, arrow functions, and scope. Functions allow you to make your code modular and reusable. In the next chapter, we’ll look at handling events and user interactions, enabling your code to respond dynamically to user actions.