Überprüfen Sie den folgenden Ausschnitt aus HTML/Javascript-Code aus:Was ist der Umfang einer JavaScript-Variable, die in einer for() - Schleife deklariert ist?
<html>
<head>
<script type="text/javascript">
var alerts = [];
for(var i = 0; i < 3; i++) {
alerts.push(function() { document.write(i + ', '); });
}
for (var j = 0; j < 3; j++) {
(alerts[j])();
}
for (var i = 0; i < 3; i++) {
(alerts[i])();
}
</script>
</head><body></body></html>
Diese Ausgänge:
3, 3, 3, 0, 1, 2
, die nicht das, was ich erwartet hatte - ich 0, 1, 2, 0, 1, 2,
ich die Ausgabe erwartete (fälschlicherweise) angenommen, dass die anonyme Funktion, die in das Array geschoben wird, sich wie eine Schließung verhält und den Wert von i
erfasst, der beim Erstellen der Funktion zugewiesen wird - aber es erscheint tatsächlich i
verhält sich wie eine globale Variable.
Kann jemand erklären, was in diesem Codebeispiel mit dem Bereich i
passiert und warum die anonyme Funktion ihren Wert nicht erfasst?
richtige Antwort - danke! - Aber ich habe Pointys Antwort akzeptiert, weil "mein eigener" + Idaho mich zum Lachen gebracht hat ... –