It is quite easy to pollute global scope by defining variables or functions that impact core functions.

const parseInt = val => console.log("int parsed: ", val);

parseInt(1);
// int parsed: 1

parseInt has transformed into a printer, thanks to the above code.

The practice of “overriding” global scope is not useful and should be avoided like the plague (If you are born in the wrong century - “plague is to be avoided at all costs”). Using such declarations -

  • cause confusion
  • introduce inconsistencies
  • cause confusion

Yes, “cause confusion” is repeated for clarity.

The next time you see a function behaving badly, check for such declarations first. For some reason, some developers end up thinking that it is a good idea to tackle the psychopath of a maintenance engineer.

But, if you inherit such a function and cannot quite change it at this time - you may want to “pass” the global reference to such functions/modules/classes. Refer to those global scopes all the time for any future changes.