Explain Codes LogoExplain Codes Logo

No restricted globals

javascript
eslint-error
javascript-best-practices
react-hooks
Nikita BarsukovbyNikita Barsukov·Mar 1, 2025
TLDR

Bypass the No restricted globals error by prefixing global objects with window. to rationalize them from local variables. For instance, use window.location instead of location to distinguish between the global location object and local variables.

Example restricting global:

button.addEventListener('click', (e) => console.log(e)); // 'e' is the local event, not a global celebrity

Accessing a global variable:

console.log(window.innerHeight); // Properly invited, the global 'innerHeight' can join the party

This focused strategy preserves global scope wholeness and avoids potential variable disputes.

Tackling Scope Conflicts

Referencing location precisely

Choosing window.location makes clear the difference between the global and local location variables. It's like calling someone by their full name in a busy room.

Leveraging hooks and high-order components

Harness useLocation hook from 'react-router-dom' in React for rocking the location details in your functional components. For class components, withRouter sneakily inserts location in as a prop, like a secret agent.

Commanding ESLint

To keep code quality sparkling while resolving the no-restricted-globals error, use // eslint-disable-next-line no-restricted-globals to disable ESLint for that one rebellious line.

Spreading props and destructuring

Pass location as a prop to your kids (i.e. child components) and use destructuring to clearly say what you need from them. Treat it as a back-to-school shopping list for properties.

const Component = ({ location, ...props }) => { // Unpack location and other props here for the epic adventure };

Deeper Dives into Globals

Understanding ESLint rules

ESLint's no-restricted-globals rule is like your personal bodyguard against bugs that come from confusing the global rebels. Customize it to fit your project's vision.

Seeking help when research fails

When the fog of ESLint error seems impossible to pierce, call for reinforcements. Colleague, mentor, or even the magical online community can provide the beacon you need.

Deciding your course of action

Don't just quickly disable ESLint; it's not an evil banning your fun. Weigh your actions. Perhaps passing location as a prop may leave your code more orderly and efficient.

Handling multiple props

When you need to juggle multiple props, the spread operator is your best friend. Use it wisely, like a Swiss Army knife.

Jousting with Restricted Globals

Distinguishing local vs global scope

Telling apart local and global scope is crucial. Local variables should always be the first choice. Don't mix your apples and oranges, literally and figuratively.

Propagating and isolating scope

Send necessary globals as params to your destination. Kind of like sending an invitation to a party. Segregate your components, maintain cleanliness, and make testing a piece of cake.

Harnessing ESLint for sustainable code

Use ESLint as your trusty sidekick. Apply no-restricted-globals strategically, allowing certain globals when needed, but also enforcing coding discipline in your realm.

References