If you're familiar with named/keyword arguments in programming languages like Ruby, Python, and PHP 8, you might wonder if JavaScript offers the same functionality.
That's an excellent question. Named parameters, also known as named arguments, significantly enhance code readability. With named-parameter arguments, we can directly understand the purpose of each argument in a function call.
One way to achieve this is by using object destructuring on the function parameters.
Here’s an example:
const invertSentence = ({
sentence,
doesFormat = false
}) => {
if (doesFormat) {
return sentence;
}
// Logic…
// Split the sentence into two segments
const [stringOne, stringTwo] = sentence.split(“. “);
// Rebuild the sentence
const rebuiltString = `${stringTwo} ${stringOne}`;
return rebuiltString;
};
Now, you can specify the required properties as “named arguments” when calling the function.
invertSentence({
sentence: 'JS makes my job easier. Writing clean code avoid me from having a headache',
doesFormat: false
});
Conclusion
In conclusion, JavaScript doesn't support keyword arguments natively, unlike PHP 8 and Python for instance. However, thanks to the power of object destructuring (introduced in ES6), we can structure our function signatures to accept arguments using their respective property names, thereby enhancing code readability.
And you, how often are you using this practice?
Happy Day! 🤠 You can also follow me on GitHub - https://github.com/pH-7
Top comments (5)
Love this, I always push for destructured params. It saves me from so many headaches later
That's great to hear! Thanks for passing by @nathan_tarbert! ☺️
I find the 2-parameter
data, options
pattern usually works well, as long as there's one obvious param that would go indata
. I'm not sure your current example makes sense, as having an option that just means "do nothing" seems like an anti-pattern, but say you had adelimiter
param instead, it could look like this, withsentences
being the obvious candidate for the data param:I wouldn't go to deep in the optional functionality, that is not the point of the example.
Your method shows the rigidity of both methods.
In your example the sentences parameter can't be called by name. While in the post example the sentence parameter can not be called without a name.
In languages where named parameters are build in, the parameters can be used by name and then they can be out of order. Or the parameters can be used without the name, but then they have to be called in order.
While I prefer explicit over implicit in code. In this case i lean more to your method where it is not necessary to use the name of the parameter for the required parameters.
Pretty cool, I use this trick all the time and honestly my brain thanks me every time I debug stuff.