JavaScript has keywords and reserved words that can't be used as identifiers, but there's also a number of host objects that exist and can be overridden without any warning.
Source: https://www.nczonline.net/blog/2007/06/03/javascript-variable-names-you-shouldn-t-use/
self– I see this a lot when setting a pointer to thethisobject, such as:var self = this;. Oftentimes, this is how developers are keeping a reference to an object for use inside of a closure. The problem is thatselfis already in use as another pointer to thewindowobject. Don't redefineselfas something other than what it is as it could confuse others looking at your code.top– This one is most often used in combination with a variable namedleftto determine or set element coordinates. Once again, the problem is thattopis a host object, it points to the outermostwindowobject and is most useful when used from within a frame.location– I'm surprised, but I have seen variables with this name. This is a host object containing information about the page that is currently loaded.