The terms "parameter" and "argument" are often used interchangeably in the context of JavaScript functions. You may have wondered what the difference is, if any. Let's clear this shit up once and for all! 💩

Parameters

Let's look at a function that adds two numbers together and returns the result.

/**
* Calculate the sum of two numbers
* @param {Number} num1 The first number
* @param {Number} num2 The second number
* @returns {Number} The sum of the two numbers
*/

function add(num1, num2) {
return num1 + num2;
}

In our add() function above, the parameters are num1 and num2. They're the names listed in the function declaration. You could give a parameter any arbitrary name, but a descriptive name is best. They're like variables in this way. We've used num1 and num2 here because we're expecting two numbers to be passed in when the function is called.

Arguments

Let's call our add() function:

add(3, 5); // 8

In the example above, the numbers 3 and 5 are our arguments. They're the actual values we pass into the function. Our parameters (num1 and num2) are initialized with these values. In other words: when we call the function with the values 3 and 5, the num1 parameter refers to 3, and the num2 parameter refers to 5.

Does it matter?

Not really. If you're pedantic like me, you'll be specific. But I'm just pernickety like that. The fact is, it doesn't really matter. Lots of JavaScript tutorials use the terms interchangeably, so people will know what you mean either way. Be pedantic like me, or don't. The choice is yours 🙂