wake-up-neo.com

Was ist der Unterschied zwischen window.location = und window.location.replace ()?

Gibt es einen Unterschied zwischen diesen beiden Zeilen?

var url = "http://www.google.com/";
window.location = url;
window.location.replace(url);
252
Aaron Digulla

window.location Fügt Ihrer Chronik einen Eintrag hinzu, in dem Sie auf "Zurück" klicken können (oder sollten) und zur aktuellen Seite zurückkehren können.

window.location.replace Ersetzt das aktuelle Verlaufselement, sodass Sie nicht mehr dorthin zurückkehren können.

Siehe window.location :

assign(url): Laden Sie das Dokument unter der angegebenen URL.

replace(url): Ersetzen Sie das aktuelle Dokument durch das Dokument unter der angegebenen URL. Der Unterschied zu der assign() -Methode besteht darin, dass nach Verwendung von replace() die aktuelle Seite nicht im Sitzungsverlauf gespeichert wird, was bedeutet, dass der Benutzer die Schaltfläche Zurück nicht zum Navigieren verwenden kann es.

Oh und allgemein gesagt:

window.location.href = url;

wird bevorzugt gegenüber:

window.location = url;
372
cletus

TLDR;

benutze location.href oder besser window.location.href;

Wenn Sie dies jedoch lesen, erhalten Sie unbestreitbare Beweise.

Die Wahrheit ist, es ist in Ordnung zu verwenden, aber warum Dinge tun, die fragwürdig sind. Du solltest die höhere Straße nehmen und es einfach so machen, wie es wahrscheinlich gemacht werden sollte.

location = "#/mypath/otherside"
var sections = location.split('/')

Dieser Code ist in Bezug auf Syntax, Logik und Typ vollkommen korrekt. Wissen Sie, dass das Einzige daran falsch ist?

es hat location anstelle von location.href

was ist damit?

var mystring = location = "#/some/spa/route"

was ist der Wert von mystring? Weiß jemand wirklich, ohne einen Test zu machen. Niemand weiß, was genau hier passieren wird. Verdammt, ich habe das gerade geschrieben und weiß nicht einmal, was es tut. location ist ein Objekt, aber ich weise eine Zeichenfolge zu, wird die Zeichenfolge übergeben oder das Standortobjekt übergeben. Nehmen wir an, es gibt eine Antwort darauf, wie dies umgesetzt werden sollte. Können Sie garantieren, dass alle Browser dasselbe tun?

Ich kann mir vorstellen, dass alle Browser das Gleiche tun werden.

var mystring = location.href = "#/some/spa/route"

Was ist, wenn Sie dies in TypeScript einfügen, wird es brechen, weil der Typ-Compiler sagt, dass dies ein Objekt sein soll?

Diese Konversation ist jedoch so viel tiefer als nur das Objekt location. Um was für einen Programmierer handelt es sich bei dieser Konvertierung?

Wenn Sie diese Abkürzung nehmen, ist es vielleicht heute okay, morgen ist es vielleicht okay, verdammt noch mal, es ist vielleicht für immer okay, aber Sie, mein Herr, sind jetzt ein schlechter Programmierer. Es wird für dich nicht in Ordnung sein und es wird dich im Stich lassen.

Es wird mehr Objekte geben. Es wird eine neue Syntax geben.

Sie können einen Getter definieren, der nur eine Zeichenfolge akzeptiert, aber ein Objekt zurückgibt. Das Schlimmste ist, dass Sie glauben, dass Sie etwas Richtiges tun. Sie glauben, dass Sie für diese clevere Methode brillant sind, weil die Leute Sie hier schändlich in die Irre geführt haben.

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

Mit Gettern und Setzern würde dieser Code tatsächlich funktionieren, aber nur weil es getan werden kann, heißt das nicht, dass es 'klug' ist, dies zu tun.

Die meisten Leute, die programmieren, lieben es zu programmieren und besser zu werden. In den letzten Jahren bin ich ziemlich gut geworden und habe viel gelernt. Das Wichtigste, was ich jetzt weiß, insbesondere wenn Sie Bibliotheken schreiben, ist Konsistenz und Vorhersehbarkeit.

Tun Sie die Dinge, die Sie konsequent tun können.

+"2" <- hier wird die Zeichenfolge in eine Zahl zerlegt. solltest du es benutzen oder solltest du parseInt("2") verwenden?

was ist mit var num =+"2"?

Nach dem, was Sie gelernt haben, bin ich aus Sicht von Stackoverflow nicht allzu hoffnungsvoll.

Wenn Sie anfangen, diesen beiden Wörtern konsequent und vorhersehbar zu folgen. Sie kennen die richtige Antwort auf jede Menge Fragen zum Stackoverflow.

Lassen Sie sich zeigen, wie sich das auszahlt. Normalerweise setze ich ; In jede Zeile von Javascript, die ich schreibe. Ich weiß, dass es ausdrucksvoller ist. Ich weiß, dass es klarer ist. Ich habe meine Regeln befolgt. Eines Tages habe ich mich dagegen entschieden. Warum? Weil mir so viele Leute sagen, dass es nicht mehr benötigt wird und JavaScript darauf verzichten kann. Also, was ich beschlossen habe, dies zu tun. Jetzt habe ich etwas sehr Einfaches geschrieben und es nicht überprüft, weil ich mir als Programmierer sicher bin (weil Sie die Früchte des Erlernens einer Sprache genießen sollten). Ich habe ein Komma gelöscht, und ich hätte nicht gedacht, dass ich noch einmal testen muss, ob es so einfach ist, ein Komma zu entfernen.

Ich habe etwas Ähnliches in es6 und babel geschrieben

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

Dieser Code ist fehlgeschlagen und hat ewig gedauert, um es herauszufinden. Aus irgendeinem Grund sah es so aus

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

tief im Quellcode versteckt sagte es mir, "Hallo Welt" ist keine Funktion.

Für mehr Spaß zeigt Node die Quellkarten des transpilierten Codes nicht an.

Vergeudete so viel blöde Zeit. Ich habe auch jemandem erklärt, wie brillant ES6 ist, und dann musste ich mit dem Debuggen beginnen und demonstrieren, wie kopfschmerzfrei und besser ES6 ist. Nicht überzeugend ist es.

Ich hoffe das hat deine Frage beantwortet. Dies ist eine alte Frage, die sich eher an die zukünftige Generation richtet, an Menschen, die noch lernen.

Frage, wenn Leute sagen, dass es egal ist, wie es funktioniert. Die Chancen stehen gut, dass eine erfahrenere Person es Ihnen auf andere Weise mitteilt.

was passiert, wenn jemand das Standortobjekt überschreibt? Sie werden einen Shim für ältere Browser machen. Es wird eine neue Funktion geben, die angepasst werden muss, und Ihr 3 Jahre alter Code wird fehlschlagen.

Meine letzte Notiz zum Nachdenken.

Das Schreiben von sauberem, klarem, zielgerichtetem Code bewirkt etwas für Ihren Code, das nicht mit richtig oder falsch beantwortet werden kann. Es macht Ihren Code zu einem Enabler.

Sie können mehr Dinge Plugins, Bibliotheken ohne Angst vor der Unterbrechung zwischen den Codes verwenden.

für die Aufzeichnung. verwenden

window.location.href

11
Lpc_dark