Ich habe ein Stück Code mit While-Schleife, die ich mit SetTimeout() stoppen möchte. Aber es scheint wie eine Endlosschleife, die nie setTimeout() auslöst. Wenn ich die While-Schleife entferne, wird das Timeout korrekt ausgelöst. Was ist bitte falsch?Wie endlose While-Schleife über setTimeout in Javascript zu beenden
$(document).ready(function()
{
var i = 0, s = false;
setTimeout(function()
{
s = true;
console.log("Timeuot!!!");
console.log("s value is " + s);
}, 1000);
while(s === false)
{
console.log("this is while and s is " + s);
i++;
}
console.log("iterations: " + i);
});
@Quentin der 'S' innerhalb der setTimeout im globalen Bereich festgelegt ist. Warum liege ich falsch? –
@RoyiNamir - Die an 'setTimeout' übergebene Funktion wird in einer anderen Funktion definiert. Es hat Zugriff auf den Umfang dieser Funktion. Da in diesem Bereich ein nicht-globales "s" ist, greift es auf dieses "s" zu. – Quentin
@RoyiNamir h s innerhalb von setTimeout ist derjenige des umschließenden Bereichs, also der eine, der oben deklariert und definiert wurde. – pinturic