如何杀死Javascript脚本?

时间:2012-03-12 02:17:11

标签: javascript

我正在尝试调试一组重定向用户的函数。我想在运行时“杀死”脚本以读取console.log()的输出。我不能只使用简单的return,因为有许多功能可以协同工作。

3 个答案:

答案 0 :(得分:1)

在代码中要暂停的位置设置断点。如果您在代码浏览器中添加debugger statement支持它将自动停止并打开调试器(实际上我认为某些浏览器(Chrome?)可能会忽略该语句,除非您已经打开了控制台/开发工具,但显然你可以在必要时开始使用开发工具。

答案 1 :(得分:1)

有几个选项,并非所有选项都适用于您的情况:

  1. 抛出异常;这将停止功能和任何来电功能;
  2. 使用alert(),如ismaelga建议的那样;
  3. 设置断点,如nnnnnn建议的那样;您可以使用debugger关键字,也可以使用浏览器的GUI(如果有);
  4. console.log重新定义为空函数;这样就不会记录任何内容,因此您可以在不受干扰的情况下读取到目前为止记录的内容。
  5. 有些选项无法实现的情况:

    1. 如果您的代码响应事件或使用setInterval之类的内容,即使“主循环”停止,其他代码仍然可以运行并记录内容;
    2. 警报窗口可能难以查看日志,具体取决于浏览器的突出程度;
    3. 没有合适的调试器,或者您无法安装;
    4. 某些功能已存储console.log的本地副本,因此重新定义它不会影响它们。
    5. 在所有选项中,我都会消化第4个,因为你可以平静地阅读你的日志,而不会“破坏”页面。如果你想“过滤”日志,你也可以让一些函数调用“正确”的日志(console.log的保存副本),而其余的调用“假”日志(你重新定义的那个)。

答案 2 :(得分:0)

声明一个在任何函数之外的全局变量,并在每个函数或长时间运行的循环中添加代码来检查该变量的值,并且只有在以某种方式设置该值时才会继续。这样变量就可以作为信号量,你可以从任何地方改变它的值,并根据它的值终止所有处理。

例如,一个名为stopProcessing的简单布尔变量,初始化为false,但可以设置为true,让所有函数都知道返回,所有循环都要尽快破坏。