Saltar al contenido

¿Cuál es la diferencia entre window.location = y window.location.replace ()?

Solución:

window.location agrega un elemento a su historial en el que puede (o debería poder) hacer clic en “Atrás” y volver a la página actual.

window.location.replace reemplaza el elemento del historial actual para que no pueda volver a él.

Ver window.location:

assign(url): Cargue el documento en la URL proporcionada.

replace(url): Reemplace el documento actual con el de la URL proporcionada. La diferencia con el
assign() El método es que después de usar
replace() la página actual no se guardará en el historial de sesiones, lo que significa que el usuario no podrá usar el botón Atrás para navegar hasta ella.

Ah, y en general:

window.location.href = url;

se favorece sobre:

window.location = url;

TLDR;

usar location.href o mejor uso window.location.href;

Sin embargo, si lee esto, obtendrá pruebas innegables.

La verdad es que está bien de usar, pero ¿por qué hacer cosas cuestionables? Debería tomar el camino más alto y hacerlo de la manera que probablemente debería hacerse.

location = "#/mypath/otherside"
var sections = location.split("https://foroayuda.es/")

Este código es perfectamente correcto desde el punto de vista de la sintaxis, la lógica, el tipo de letra, ¿sabes cuál es el único problema con él?

Tiene location en lugar de location.href

que hay de esto

var mystring = location = "https://foroayuda.es/#/some/spa/route"

cual es el valor de mystring? ¿Alguien sabe realmente sin hacer alguna prueba? Nadie sabe qué pasará exactamente aquí. Demonios, acabo de escribir esto y ni siquiera sé qué hace. location es un objeto, pero estoy asignando una cadena, ¿pasará la cadena o pasará el objeto de ubicación? Digamos que hay alguna respuesta a cómo debería implementarse esto. ¿Puede garantizar que todos los navegadores harán lo mismo?

Esto, puedo adivinar que todos los navegadores manejarán lo mismo.

var mystring = location.href = "https://foroayuda.es/#/some/spa/route"

¿Qué pasa si coloca esto en mecanografiado, se romperá porque el compilador de tipos dirá que se supone que es un objeto?

Esta conversación es mucho más profunda que solo el location objeto sin embargo. ¿De qué trata esta conversión sobre qué tipo de programador quieres ser?

Si toma este atajo, sí, podría estar bien hoy, podría estar bien mañana, demonios, podría estar bien para siempre, pero usted, señor, ahora es un mal programador. No estará bien para ti y te fallará.

Habrá más objetos. Habrá una nueva sintaxis.

Puede definir un captador que solo tome una cadena pero devuelva un objeto y la peor parte es que pensará que está haciendo algo correcto, podría pensar que es brillante para este método inteligente porque la gente aquí lo ha descarriado vergonzosamente.

var Person.name = {first:"John":last:"Doe"}
console.log(Person.name) // "John Doe"

Con captadores y definidores, este código realmente funcionaría, pero el hecho de que se pueda hacer no significa que sea ‘WISE’ hacerlo.

A la mayoría de las personas que programan les encanta programar y les encanta mejorar. En los últimos años he mejorado bastante y he aprendido mucho. Lo más importante que sé ahora, especialmente cuando escribes bibliotecas, es la coherencia y la previsibilidad.

Haga las cosas que pueda hacer constantemente.

+"2" <- esto aquí mismo analiza la cadena a un número. ¿Deberías usarlo? o deberías usar parseInt(“2”)?

qué pasa var num =+"2"?

Por lo que ha aprendido, de las mentes de stackoverflow, es de esperar que no lo sea.

Si empiezas a seguir estas 2 palabras consistentes y predecibles. Sabrá la respuesta correcta a un montón de preguntas sobre stackoverflow.

Déjame mostrarte cómo esto vale la pena. Normalmente coloco ; en cada línea de javascript que escribo. Sé que es más expresivo. Sé que está más claro. He seguido mis reglas. Un día decidí no hacerlo. ¿Por qué? Porque mucha gente me dice que ya no es necesario y que JavaScript puede prescindir de él. Entonces, decidí hacer esto. Ahora que me he vuelto seguro de mí mismo como programador (como debería disfrutar el fruto de dominar un idioma) escribí algo muy simple y no lo revisé. Borré una coma y no pensé que necesitaba volver a probar para algo tan simple como quitar una coma.

Escribí algo similar a esto en es6 y babel

var a = "hello world"
(async function(){
  //do work
})()

Este código falla y tardó una eternidad en darse cuenta. Por alguna razón lo que vio fue

var a = "hello world"(async function(){})()

escondido en lo profundo del código fuente me decía que “hola mundo” no es una función.

Para más diversión, el nodo no muestra los mapas de origen del código transpilado.

Perdí tanto tiempo estúpido. También le estaba presentando a alguien cómo ES6 es brillante y luego tuve que comenzar a depurar y demostrar cuán libre de dolores de cabeza y mejor es ES6. No es convincente.

Espero que esto responda a tu pregunta. Siendo esta una vieja pregunta, es más para la generación futura, gente que todavía está aprendiendo.

Pregunta cuando la gente dice que no importa de cualquier manera funciona. Lo más probable es que una persona más sabia y con más experiencia le diga lo contrario.

¿Qué pasa si alguien sobrescribe el objeto de ubicación? Harán un calce para los navegadores más antiguos. Obtendrá alguna característica nueva que necesita ser ajustada y su código de 3 años fallará.

Mi última nota para reflexionar.

Escribir código limpio y claro con un propósito hace algo por su código que no se puede responder con bien o mal. Lo que hace es convertir su código en un habilitador.

Puede usar más complementos, bibliotecas sin temor a interrupciones entre los códigos.

para el registro. usar

window.location.href

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *