The spread syntax can be used to pass the elements of an array as individual arguments to a function, which is often more convenient than accessing them by index.
Example 1: Basic Function Arguments
// A function that adds three numbers
function sum(x, y, z) {
return x + y + z;
}
// An array of numbers
const numbers = [1, 2, 3];
// Pass array elements as arguments using spread syntax
const result = sum(...numbers);
// Log the result
console.log(result); // Output: 6
Explanation
Here, ...numbers
expands the numbers
array into an argument list (1, 2, 3)
. The sum
function then receives these as x
, y
, and z
respectively, returning their sum.
Example 2: Using with Math Functions
// An array of numbers
const values = [5, 2, 8, 1, 9];
// Use Math.max() with spread syntax to find the maximum value
const maxValue = Math.max(...values);
// Log the maximum value
console.log(maxValue); // Output: 9
Explanation
The Math.max()
function accepts a variable number of arguments. The spread syntax provides a clean way to pass all elements from the values
array to Math.max()
to find the largest number.
Example 3: Combining with Other Arguments
// A function that logs a message with a list of tags
function logMessage(message, ...tags) {
console.log(`${message} [${tags.join(', ')}]`);
}
// An array of tags
const postTags = ['tech', 'javascript', 'es6'];
// Call the function with a string and spread array elements
logMessage('New article available:', ...postTags);
// Output: New article available: [tech, javascript, es6]
Explanation
This example showcases passing a regular argument ('New article available:'
) followed by the spread elements of the postTags
array. This is useful when a function expects both fixed and variable arguments.
Example 4: Spreading into a new Date()
Constructor
// An array representing date components [year, month, day]
const dateComponents = [2025, 5, 21]; // Note: month is 0-indexed (5 = June)
// Create a new Date object using spread syntax for arguments
const eventDate = new Date(...dateComponents);
// Log the formatted date string
console.log(eventDate.toDateString()); // Output: 'Sat Jun 21 2025'
Explanation
The Date
constructor can take multiple arguments for year, month, day, etc. The spread syntax allows you to neatly pass these values from an array directly into the constructor.
Example 5: Calling a Function with Insufficient Arguments
// A function requiring three arguments
function display(a, b, c) {
console.log(`a: ${a}, b: ${b}, c: ${c}`);
}
// An array with only two elements
const partialArgs = [10, 20];
// Spreading an array with fewer elements results in 'undefined' for missing ones
display(...partialArgs); // Output: a: 10, b: 20, c: undefined
Explanation
This code shows what happens when you spread an array that has fewer elements than the function's parameters. The remaining parameters (c
in this case) are assigned the value undefined
.
Example 6: Calling a Function with Excess Arguments
// A function with two parameters
function multiply(x, y) {
return x * y;
}
// An array with more elements than required
const extraArgs = [5, 10, 15, 20];
// The function will only use the required number of arguments
const product = multiply(...extraArgs);
// Log the result
console.log(product); // Output: 50
Explanation
When you spread an array with more elements than the function's parameters, the function simply ignores the extra arguments. Here, multiply
only uses the first two elements (5 and 10).
Example 7: Spreading String Characters into a Function
// A function that logs its three arguments
function logChars(char1, char2, char3) {
console.log(char1, char2, char3);
}
// A string to be spread
const myString = 'abc';
// Strings are iterable, so they can be spread into characters
logChars(...myString); // Output: a b c
Explanation
This example demonstrates that the spread syntax is not limited to arrays; it works with any iterable. Since strings are iterable, spreading a string passes each of its characters as a separate argument to the function.