What are Parameters and Arguments in a Function?
In JavaScript, parameters and arguments are how functions receive and use input values.
A Parameter is a placeholder for a value (like a variable) inside the function definition.
An Argument is the actual value you pass to the function when calling it.
Example:
function greet(name) {
console.log("Hello, " + name + "!");
}Here, name is a parameter and it’s used inside the function.
greet("Shefali");Here, "Shefali" is the argument and it's the real value you're passing to the function.
To put it simply, parameters are like empty containers, and arguments fill them with actual values.
Defining Parameters
When you create a function, you can define parameters to tell the function what kind of input it should expect.
Syntax:
function functionName(parameter) {
// use parameter inside the function
}Example:
function greet(name) {
console.log("Hello, " + name + "!");
}Here,
nameis a parameter.- It will hold the value you pass when calling the function.
You can have zero, one, or more parameters separated by commas. For example: (name), (name, age).
function add(a, b) {
console.log(a + b);
}Here,
aandbare parameters.- You can now call
add(2, 3)and it will print5.
Passing Arguments
When you call a function, you give it actual values that replace the function’s parameters, these values are called arguments.
Syntax:
function greet(name) {
console.log("Hello, " + name + "!");
}
greet("Shefali");Here,
nameis the parameter (placeholder)."Shefali"is the argument (actual value).
You can pass multiple arguments like this:
function add(a, b) {
console.log(a + b);
}
add(2, 3); // Output: 5Here,
aandbare parameters.2and3are arguments passed into the function.
Note:
- The order of the arguments matters that means the first argument goes to the first parameter, and so on.
- If you pass fewer arguments than parameters, the missing parameters become
undefined. If you pass more arguments, the extra ones are ignored (unless using rest parameters).
Default Parameters
If you want a function to work with a default value if no argument is passed. Then you can use the default parameters.
Default parameters provide fallback values, and they are used only when no argument is passed.
Example:
function greet(name = "Guest") {
console.log("Hello, " + name + "!");
}Here,
- If you pass a
name, then it uses that. - If you don’t pass anything, then it uses
"Guest".
greet("Shefali"); // Output: Hello, Shefali!
greet(); // Output: Hello, Guest!Why use default parameters?
- To avoid errors when arguments are missing.
- To make your functions more flexible and safe.
Rest Parameters (...args)
When you don’t know how many arguments a function will get, then you can use rest parameters to collect all extra arguments into one array.
Rest parameters use ... before a name.
They are useful for functions that take many or an unknown number of inputs.
Syntax:
function sum(...numbers) {
console.log(numbers);
}Here,
...numbersis the rest parameter.- It collects all arguments into an array called
numbers.
Example:
function sum(...numbers) {
let total = 0;
for (let num of numbers) {
total += num;
}
console.log(total);
}
sum(1, 2, 3); // Output: 6
sum(5, 10, 15, 20); // Output: 50Here,
- The function
sumuses...numbers, which means it can take any number of arguments and groups them into an array callednumbers. - It creates a variable
totaland starts it at0. - Then, it goes through each number inside the numbers array one by one.
- For each number (
num), it adds it tototal. - After adding all numbers, it prints the total sum.
sum(1, 2, 3);adds1 + 2 + 3, so it prints6.sum(5, 10, 15, 20);adds5 + 10 + 15 + 20, so it prints50.
Why use rest parameters?
- When you want to accept any number of arguments.
- You don’t have to predefine how many inputs the function takes.
Arguments Object in Regular Functions
In regular functions, JavaScript provides you a special built-in object called arguments.
It automatically stores all the values (arguments) passed to the function, even if the function has no parameters.
You can think of arguments as a box that holds all the inputs, in the order they were given.
It looks like an array, but it's not exactly an array.
For example:
function showArgs() {
console.log(arguments);
}
showArgs(1, "hello", true);
// Output: [1, "hello", true]Here,
- The function
showArgsdoesn’t have any parameters. - But when you call
showArgs(1, "hello", true), JavaScript still puts those values into theargumentsobject. - So,
argumentsholds all 3 values,1,"hello", andtrue, in the same order they were passed to the function.
Some Important Points
argumentsworks only in regular functions, not in arrow functions.- It looks like an array, but it’s not a real array.
- It doesn’t have array methods like
.forEachor.mapdirectly. - You can convert it to a real array if needed.
How to Convert arguments to a Real Array
If you want to use array methods on it, you can convert it to a real array like this:
function sum() {
let args = Array.from(arguments);
let total = 0;
for (let num of args) {
total += num;
}
console.log(total);
}
sum(1, 2, 3); // Output: 6Here,
- A function named
sumis created. It doesn’t have any parameters. - Even though there are no parameters, you can still access the passed values using the
argumentsobject. Array.from(arguments)converts the specialargumentsobject into a real array.- Now
argsbecomes [1, 2, 3]. - You start with a variable
totalset to0. This will store the sum. - Then this
for...ofloop goes through each number in theargsarray. First1is added tototal, then2, then3. - After the loop finishes,
totalis6, so it prints6in the console.
👉 Next tutorial: JavaScript Function Types