私はJavaScriptを使ってhttp://projecteuler.net/でいくつかの問題にひびを入れてきました。単純なhtmlページを使用し、スクリプトタグでコードを実行して、ブラウザのコンソールに結果を記録できるようにしました。ループを試してみると、ブラウザがクラッシュすることがあります。
この種の開発を行うためのより良い環境はありますか?
私はJavaScriptを使ってhttp://projecteuler.net/でいくつかの問題にひびを入れてきました。単純なhtmlページを使用し、スクリプトタグでコードを実行して、ブラウザのコンソールに結果を記録できるようにしました。ループを試してみると、ブラウザがクラッシュすることがあります。
この種の開発を行うためのより良い環境はありますか?
ブラウザで計算コストの高いプログラムを実行している場合は、Webワーカーの使用を検討することをお勧めします。つまり、ブラウザをロックしない別のスレッドでコードを実行できます。
javascriptプログラムをそのまま実行することに興味がある場合は、node.jsやRhinoのようなものを使用してみませんか?そうすれば、出力が「トラブル」になった場合に、出力を失うことなく簡単にログに記録できます。
私は2つの準備ができている可能性を考えることができます:
1)ブレークポイントのあるデバッガーを使用します。Firebugはかなりいいです。SafariとChromeには、いくつかの組み込みのデバッグツールもあります。
2) Mozilla RhinoとEnv-jsを使用して、テストをブラウザーの外に移動できます( http://groups.google.com/group/envjsおよびhttp://github.com/thatcher/env-jsを参照) 。
最新のブラウザ(Operaを除く)はすべて、スクリプトが5〜10秒以上実行された場合にスクリプトを中断する必要があります(ソース)。
Firefoxでは、10秒が大きすぎる罰を意味する場合は、このしきい値をさらに下げることができます。また、Firebugコンソールからコードを実行する場合でも、このメカニズムが機能することに注意してください。
Firefoxでスクリプトを停止するhttp://img819.imageshack.us/img819/9655/infloopsp.jpg
この機能だけでも、これらのループ実験にかなり安全な環境を提供できるはずです:)
ブラウザがクラッシュする原因となるバグを修正する以外に、ブラウザがクラッシュしないようにするためにできることは何もありません。
少なくとも、クラッシュの影響を軽減するには、Chromeのように、クラッシュを1つのタブで他のタブから分離する(つまり、自分のページだけを失う)か、テスト専用の別のブラウザーをインストールします。
ログに記録された可能性のあるデータを追跡するという点では、デバッガーが組み込まれたFirebugのようなプラグインを使用して、スクリプトの実行を途中で一時停止し、おそらくクラッシュが発生する前に変数を調べることができます。