¿Cuándo establecerías locationuna cadena URL en lugar de la configuración location.href?
location = "http://www.stackoverflow.com";
vs
location.href = "http://www.stackoverflow.com";
javascript
quimérico
fuente
fuente

location.hrefcorreo falla debido a la misma política de origen: javascript.info/tutorial/…replaceyassign: stackoverflow.com/q/1865837/632951 , stackoverflow.com/q/7703689/632951 , stackoverflow.com/q/10302905/632951Respuestas:
Puede configurar
locationdirectamente porque es un poco más corto. Si está tratando de ser conciso, generalmente también puede omitirlowindow..URL asignaciones a la vez
location.hrefylocationse definen para el trabajo en JavaScript 1.0, de vuelta en Netscape 2, y se han implementado en todos los navegadores desde entonces. Así que elija y use lo que encuentre más claro.fuente
Incluso si ambos funcionan, usaría el último.
locationes un objeto, y asignar una cadena a un objeto no es un buen augurio para la legibilidad o el mantenimiento.fuente
window.location: no requiereSAME ORIGIN.location = 'http://www.example.com'parece súper legible. Aunque, como un caso especial. Eso es compatible con versiones anteriores y seguirá siendo compatible en el futuro previsible.Como ya se ha dicho,
.locationes un objetoPero esa persona sugirió usar cualquiera.Pero, será mejor que uses la.hrefversión.Los objetos tienen propiedades predeterminadas que, si no se especifica nada más, se asumen. En el caso dellocationobjeto, tiene una propiedad llamada.href. Y al no especificar CUALQUIER propiedad durante la asignación, asumirá "href" de forma predeterminada.Esto está muy bien hasta que cambie una versión posterior del modelo de objeto y ya no haya una propiedad predeterminada o la propiedad predeterminada cambie. Entonces su programa se rompe inesperadamente.
Si quiere decirhref, debe especificarhref.fuente
locationfunciona porque la propiedad se definió para tener este comportamiento de asignación especial en JavaScript 1.0 y en todos los navegadores desde que lo implementó. HTML5 ahora lo requiere. Entonces, aunque puede ser más bonito o más consistente asignarlo.href, no hay una ventaja de compatibilidad hacia atrás o hacia adelante para hacerlo.window.location = urles más bonitalocation = urles más lindoHace un par de años,
locationno funcionó para mí en IE y lolocation.hrefhizo (y ambos funcionaron en otros navegadores). Desde entonces, siempre lo he usadolocation.hrefy nunca más tuve problemas. No recuerdo qué versión de IE era esa.fuente
strict modeChrome arrojará una excepción si intentas asignar directamentelocationtambién, así que siempre usolocation.hrefSolo para aclarar, no se puede hacer
location.split('#'),locationes un objeto, no una cadena. Pero puedes hacerlolocation.href.split('#');porquelocation.hrefes una cadena.fuente
Sin embargo, hay una diferencia a tener en cuenta.
Supongamos que desea crear alguna URL utilizando la URL actual. De hecho, el siguiente código lo redireccionará, porque no está llamando
String.replaceperoLocation.replace:Los siguientes códigos funcionan:
fuente
Con TypeScript, use
window.location.hrefcomowindow.locationes técnicamente un objeto que contiene:La configuración
window.locationproducirá un error de tipo, mientras quewindow.location.hrefes de tipo cadena.Fuente
fuente