Easier function arguments with destructuring

This is just a simple tip but one I think is worth mentioning, particularly after spending some time working on a large code base that I was not overly familiar with.

Add curly braces and carry on

Destructuring function arguments is such a useful addition to JavaScript, especially when it can be used to perform the following change:

// Before
function someFunction(isFeatureEnabled, timeout) {

}

// After
function someFunction({isFeatureEnabled, timeout}) {

}

Inside the function I can continue to use isFeatureEnabled and timeout exactly as before, but it’s where the function is called from that difference is made:

// Before
someFunction(true, 400);

// After
someFunction({isFeatureEnabled: true, timeout: 400});

For me this makes it very clear what the values being passed in are used for and now I don’t need to look up the source of the function to find out what true and 400 could mean.

This can be particularly tiresome if someFunction is located in another file as now it’s an additional plate to keep spinning as you comprehend the code.

Even with single arguments?

These functions can also benefit from the increased readability:

getSomeDataFromApi(2);


getSomeDataFromApi({pageNum: 2});

Renaming arguments

Don’t be afraid to make the property names verbose if needs be as they can always be renamed inside the function to make things easier:

someOtherFunction({currentUserIsAdmin: true});

function someOtherFunction({currentUserIsAdmin: isAdmin}) {
  // ...
  // Do something with `isAdmin`
}

That’s it!