When would you set
location to a URL string versus setting
location = "http://www.stackoverflow.com";
location.href = "http://www.stackoverflow.com";
You might set
location directly because it's slightly shorter. If you're trying to be terse, you can usually omit the
URL assignments to both
Even if both work, I would use the latter.
location is an object, and assigning a string to an object doesn't bode well for readability or maintenance.
Like as has been said already,
location is an object
But that person suggested using either. But, you will do better to use the
Objects have default properties which, if nothing else is specified, they are assumed. In the case of the
location object, it has a property called
.href. And by not specifying ANY property during the assignment, it will assume "href" by default.
This is all well and fine until a later object model version changes and there either is no longer a default property, or the default property is changed. Then your program breaks unexpectedly.
If you mean
href, you should specify
A couple of years ago,
location did not work for me in IE and
location.href did (and both worked in other browsers). Since then I have always just used
location.href and never had trouble again. I can't remember which version of IE that was.
Just to clarify, you can't do
location is an object, not a string. But you can do
location.href is a string.
One difference to keep in mind, though.
nextUrl = window.location.replace('/step1', '/step2');
The following codes work:
// cast to string nextUrl = (window.location+'').replace('/step1', '/step2'); // href property nextUrl = window.location.href.replace('/step1', '/step2');
With TypeScript use
window.location is technically an object containing:
Properties hash host hostname href <--- you need this pathname (relative to the host) port protocol search
window.location will produce a type error, while
window.location.href is of type string.
©2020 All rights reserved.