我一直在用 JavaScript解决http://projecteuler.net/上的一些问题。我一直在使用一个简单的 html 页面并在脚本标签中运行我的代码,这样我就可以在浏览器的控制台中记录我的结果。在尝试循环时,我有时会导致浏览器崩溃。
有没有更好的环境让我做这种开发?
我一直在用 JavaScript解决http://projecteuler.net/上的一些问题。我一直在使用一个简单的 html 页面并在脚本标签中运行我的代码,这样我就可以在浏览器的控制台中记录我的结果。在尝试循环时,我有时会导致浏览器崩溃。
有没有更好的环境让我做这种开发?
如果您在浏览器中运行计算量大的程序,您可能需要考虑使用web workers。简而言之,它们允许您在不会锁定浏览器的不同线程中运行代码。
如果你只是对运行 javascript 程序感兴趣,为什么不使用 node.js 甚至 Rhino 之类的东西呢?这样,您可以轻松地记录输出,而不会在遇到“麻烦”时丢失它。
我可以想到两种现成的可能性:
1) 使用有断点的调试器。Firebug相当不错。Safari 和 Chrome 也有一些内置的调试工具。
2)您可以使用Mozilla Rhino和 Env-js将您的测试移出浏览器(参见http://groups.google.com/group/envjs和http://github.com/thatcher/env-js)
如果脚本运行超过 5-10 秒(Source),所有现代浏览器(Opera 除外)都应该中断您的脚本。
在 Firefox 中你甚至可以降低这个阈值,如果 10 秒意味着一个太大的惩罚。另请注意,即使您从 Firebug 控制台运行代码,此机制也会生效:
在 Firefox 上停止脚本 http://img819.imageshack.us/img819/9655/infloopsp.jpg
我认为仅此功能就应该为这些循环实验提供一个非常安全的环境:)
除了修复导致浏览器崩溃的错误之外,您无法采取任何措施来防止浏览器崩溃。
您至少可以通过使用像 Chrome 这样的浏览器来减轻崩溃的影响,这种浏览器通常将一个选项卡中的崩溃与其他选项卡隔离开来(因此您只会丢失自己的页面),或者只是安装一个专门用于测试的单独浏览器。
在跟踪可能已进入日志的数据方面,您可以使用像 Firebug 这样的插件,它具有内置调试器,因此您可以暂停脚本执行并检查您的变量,大概是在发生任何崩溃之前。