如何中止或停止 JavaScript 执行?

How to abort or stop JavaScript execution?

我在一个例子中工作,在某个时候(当特定事情发生时)停止执行 javascript 代码。

这是我检测到错误的行(DEMO 处的第 36 行):

  if(error_print === null){
                s += "errors+='"+"You have error in row :" + (i+1) + "';";
                //here I want to stop the code execution

            } else{ //continue...}

所以我想要:

1- 检测到此错误时停止代码执行

2- 从

之前打印的消息中清除 #output textarea

(因此,如果发生错误,我只想在 #errors 文本区域中显示消息错误)。所以我不希望 #output 文本区域具有以下值:

This " is my first program 
My name is XXX

但我希望它在错误检测后为空。

我曾尝试使用 return;throw new Error('You have an error');,但它们都不起作用。你能帮帮我吗?提前致谢。

Here is the demo you can play with.

首先,请允许我对您fiddle中的代码做一些评论:

  • if inside a while in if inside if inside an if inside an if in a function, ... 那是读起来很糟糕的代码和等待发生的错误。请重构该代码(使用早期 returns,将其划分为函数,...)。我的经验法则永远不会嵌套超过 2 层深。好的书面代码应该记录自己,我真的不能说你的代码是不言自明的。
  • 你为什么要插入那个脚本块?我认为完全没有必要。它几乎和使用 eval() 一样糟糕...
  • 尝试使用合理的变量名。 s 在您编写代码的那一刻可能看起来很清楚,但我向您保证,在您必须去寻找错误的六个月后,它不会。

请注意,我只是想在这里帮助您,而不是想破坏您。

至于你的问题,你为什么不在某处保留一个错误布尔值。默认为 false 并在发生错误时将其设置为 true。在输出结果之前,只需检查该布尔值的状态。当它为真时,不要输出任何东西。在我看来,这应该是迄今为止最简单的解决方案。

var hasErrors = false;
...
// an error occurs
if (this.notRight) { hasErrors = true; }
...
if (! hasErrors) {
   $('#output').html(output);
}