Ich versuche einen Code zu verstehen, den ich im Internet gefunden habe. Ich verstehe in der while-Schleife nicht, warum es keine Endlosschleife ist. Wenn Sie das änderncalculator.appendChild
, z console.log
. B. läuft es für immer.
window.location.hash = 1;
var calculator = document.createElement("div");
calculator.id = "height-calculator";
while (document.body.firstChild) {
calculator.appendChild(document.body.firstChild);
}
document.body.appendChild(calculator);
document.title = calculator.clientHeight;
Grundsätzlich gibt es immer ein erstes Kind an einem nicht leeren Ort, daher ist die Bedingung immer wahr. Kann jemand erklären, warum es so nicht für immer läuft?
javascript
html
B. Ma
quelle
quelle
calculator
Element befindet sich außerhalb des Doms, und die while-Schleife bewegt sich einfach über alle untergeordneten Elemente vonbody
tocalculator
, sodass sie irgendwannbody
leer ist und die Schleife endet. Der Schlüssel hier ist wohl, dass ercalculator
selbstbody
während der Schleife kein Kind ist .Antworten:
Ein Element kann nur einem anderen Element untergeordnet sein.
Sobald Sie
document.body.firstChild
Ihren Taschenrechner anschließen, löst er sich automatisch vom Körper, sodass dem Körper schließlich die Kinder ausgehen.quelle
But wouldnt there be another firstChild? not the same as earlier but what was next in line will become the firstChild now..wouldnt it?
Es würde, und dann läuft die Schleife wieder und nimmt auch dieses Kind, bis es keine Kinder mehr hat.cloneNode
damit klonen, wird er für immer wiederholt (oder besser gesagt, bis ihm der Speicher ausgeht).Der Vorgang erfolgt also in drei einfachen Schritten:
var calculator = document.createElement("div");
diese Linie erzeugt einediv
AUSSERHALB derbody
im DOMDann bewegt die Schleife alle Kinder von
body
in das,calculator
was schließlich endet, es sei denn, esbody
gibt unendlich viele Kinder, was nicht möglich ist.document.body.appendChild(calculator);
bewegt dascalculator
unterbody
Grundsätzlich gibt es also zwei Hauptentitäten,
body
und dascalculator
Skript verschiebt alle untergeordneten Elemente vonbody
nachcalculator
und danncalculator
nachbody
.Mit anderen Worten, das Skript konvertiert alle Kinder von
body
in dasgrandchildren
vonbody
und das einzige Kind vonbody
wird dascalculator
Ich weiß, dass ich zu viel geschrieben habe, aber ich selbst habe es nach einer Weile verstanden und andere Kommentare und Antworten gelesen. Deshalb wollte ich es nur für die Zukunft hier lassen und für alle anderen, die mehr Erklärungen brauchen, um es zu bekommen. LOL
quelle