これは、XMLHttpRequest が非同期でalert('added')
実行するように設定されていて、XMLHttpRequestが呼び出しを開始する前に JavaScript 実行スレッドを停止したために発生していonreadystatechange
ます。アラートを閉じるまでに、XMLHttpRequest はすでに完了しており、4 つの呼び出しがonreadystatechange
スタックに残っており、実行が保留されています。
したがって、あなたの XMLHttpRequest はすでに完了していて、すでに.readyState
およびと.status
等しいからです。したがって、各呼び出しで、ステートメントは true と評価されます。4
200
.onreadystatechange
if
XMLHttpRequest を同期的に実行するように変更した場合 (またはalert('added')
AJAX を呼び出す前に配置した場合)、予想される数のアラートを取得します。
http://jsfiddle.net/B9a5G/6/
JavaScript イベント、タイミング、およびシングルスレッド処理の詳細:
http://javascript.info/tutorial/events-and-timing-depth