Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there any difference with using only location vs using window.location across browsers

I find myself always writing:

console.log(window.location.href);

without even thinking about it. The majority of answers on SO also write it this way. Is there any reason why I can't just write:

location.href

since location is an object at window level? Are there any cross-browser compatibility issues with this?

To Clarify: I know there is document.location - that is NOT what this question is about. This is about if there is any difference with using only location vs using window.location across browsers.

like image 710
CodingIntrigue Avatar asked Oct 17 '13 09:10

CodingIntrigue


People also ask

What is difference between window location or location?

window. location is an object that holds all the information about the current document location (host, href, port, protocol etc.). location. href is shorthand for window.

Does window location work in all browsers?

All modern browsers map document. location to the window. location but you can prefer window.

What does setting window location do?

The window.location object can be used to get the current page address (URL) and to redirect the browser to a new page.


1 Answers

There are some differences.

In global scope, there is absolutely no difference between them, but in other cases you might get in trouble:

function () {
  var location = { 'href' : '123' } ;
  console.log(window.location.href) // actual url
  console.log(location.href) // '123'
}

This stems from the fact that if you write location without prefixing it with window, it will go up through every scope to find a variable named location. Eventually it will find it in window, unless another scope declared one as well. Obviously the reverse is true as well:

function () {
  var window = { 'location' : { 'href': '123' } };  
  console.log(window.location.href) // '123'
  console.log(location.href) // actual url
}

I for one prefer to prefix the global variables with window because that way i immediately know they are global and also because when i find a global variable that is not prefixed with window, i know it is a typo missing a var, but that is purely personal preference.

like image 125
Tibos Avatar answered Oct 11 '22 12:10

Tibos