Starając się odpowiedzieć this question spotkałem dziwne zachowanie (który nie jest taki sam: jego jest ze względu na zbyt małą liczbę powtórzeń, kopalnia zbyt dużo):Pętla 3,000,000,000 iteracje zachowuje się dziwnie
HTML:
<button id="go">it will be legend...</button>
<div id="output"></div>
JS:
var output = document.getElementById('output');
document.getElementById('go').onclick = function() {
output.textContent += 'wait for it...';
for (var i=0; i<3000000000; i++) {
var unused = i; // don't really care
}
output.textContent += ' dary!';
};
pętla trwa kilka sekund, aby wykonać, ponieważ jego 3,000,000,000 iteracji.
Po kliknięciu przycisku, czego się spodziewałem:
wait for it...
pojawia- proces zawiesza się trochę z powodu pętli
dary!
pojawia
Co właściwie stało:
- proces zawiesza się trochę z powodu pętli
wait for it... dary!
pojawia razem
jakiś pomysł, dlaczego takie zachowanie?
Sprawdź samodzielnie: fiddle.
Czy zachowuje się w ten sposób we wszystkich przeglądarkach? Działa poprawnie, jeśli ustawisz mały czas oczekiwania – Huangism
Widziałem skrzypce, to naprawdę dziwne .... i pomyślałem, że 'looping' to proces czysto waniliowy! –
Również przeglądarki optymalizują zmiany w DOM/CSS, aby były wykonywane tylko wtedy, gdy jest to konieczne (aby uniknąć wielokrotnego ponownego wprowadzania zmian). –