JavaScript: Att sätta location.href versus location
När skulle du sätta location till en URL-sträng jämfört med att sätta location.href?
location = "http://www.stackoverflow.com";
mot
location.href = "http://www.stackoverflow.com";
Mozilla Developer Network-referens
Svar #1
Du kan ställa in location direkt eftersom det är något kortare. Om du försöker vara kortfattad kan du vanligtvis också utelämna window..
URL-tilldelningar till både location.href och location är definierade för att fungera i JavaScript 1.0, redan i Netscape 2, och har implementerats i alla webbläsare sedan dess. Så välj och använd det som du tycker är tydligast.
Svar #2
Även om båda fungerar, skulle jag använda den senare.
Svar #3
Som det redan har sagts. Men, du kommer att göra bättre i att använda .href-versionen.
Svar #4
För ett par år sedan fungerade inte location för mig i IE och location.href gjorde det (och båda fungerade i andra webbläsare). Sedan dess har jag alltid bara använt location.href och har aldrig haft problem igen. Jag kan inte komma ihåg vilken version av IE det var.
Svar #5
En skillnad att hålla i åtanke, dock.
Låt oss säga att du vill bygga en URL med den nuvarande URL:en. Följande kod kommer faktiskt att omdirigera dig, eftersom den inte anropar String.prototype.replace utan Location.prototype.replace:
nextUrl = window.location.replace('/step1', '/step2');
Följande koder fungerar:
// cast to string
nextUrl = (window.location+'').replace('/step1', '/step2');
// href property
nextUrl = window.location.href.replace('/step1', '/step2');
Svar #6
Bara för att förtydliga, du kan inte göra location.split(''#''), location är ett objekt, inte en sträng. Men du kan göra location.href.split(''#''); eftersom location.href är en sträng.
Svar #7
Med TypeScript, använd window.location.href eftersom window.location tekniskt sett är ett objekt som innehåller:
Properties
hash
host
hostname
href <--- you need this
pathname (relative to the host)
port
protocol
search
Att sätta window.location kommer att ge ett typfel, medan window.location.href är av typen string.
Källa
