Trong khi cố gắng để trả lời this question, tôi gặp một hành vi kỳ lạ (mà không phải là giống nhau: là mình do quá ít lần lặp lại, tôi có quá nhiều):Một vòng lặp 3,000,000,000 lặp cư xử kì lạ
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!';
};
vòng lặp mất vài giây để thực hiện, vì 3,000,000,000 lần lặp của nó.
Khi nút được nhấn vào, những gì tôi mong đợi:
wait for it...
xuất hiện- quá trình đóng băng một chút vì vòng lặp
dary!
xuất hiện
Điều gì thực sự đã xảy ra:
- quá trình đóng băng một chút vì vòng lặp
wait for it... dary!
xuất hiện cùng
Bất cứ ý tưởng tại sao một hành vi như vậy?
Tự kiểm tra: fiddle.
Ứng dụng có hoạt động theo cách này trong tất cả các trình duyệt không? Hoạt động chính xác nếu bạn thiết lập một thời gian chờ nhỏ – Huangism
Tôi thấy fiddle, đó là thực sự kỳ lạ .... và tôi nghĩ 'looping' là một quá trình đơn giản-vani! –
Ngoài ra, trình duyệt tối ưu hóa các thay đổi đối với DOM/CSS để chúng chỉ được thực thi khi cần thiết (để tránh nhiều lần liên tiếp). –