firebug 3 + eval + setTimeout = undefined

firebug-eが有効な場合、setTimeout-aのインストール後にコードにeval関数があると、FFはコード全体の実行を待たずにsetTimeoutを開始します。



通常の動作では、他のすべての実行可能コードが実行された後にsetTimeoutsが実行されます。 実行しようとすると、タイムアウトが経過するとsetTimeoutが開始されます。 ページのタイムアウトの完了後に何かが実行されている場合、setTimeoutは実行が完了するまで待機してから開始します。



 setTimeout(関数(){
	 if(window.ik)alert(「評価がコードの実行を中断し、setTimeoutが実行された」);
	その他のアラート(「すべてが正常で、すべての後にsetTimeoutが実行されます」);
 });
 ik = true;
 var obj = eval( 'window');			
 ik = false;




FF 3.0.4、FF 3.0.3でfirebug-eが有効になっている場合、setTimeout関数のikの変数は他のすべてのブラウザーでtrueになり、falseになります

Firebug 1.2.1

FF 3.1bの場合、firebugを更新する必要があります

テストページ

UPD:もちろん、普通のユーザーはfirebugを設定しません...そして開発者はそのような運命を持っています...エラーに苦しむために:) 2000行以上のコードでこのがらくたを識別するのは簡単ではありませんでした... この不確実性を知っている人がデバッグ時間を短縮できることを願っています。



All Articles