JavaScript的等同于PHP的死亡

有没有像JavaScript中的“死”? 我试过用“break”,但是不起作用:)

你只能break一个块范围,如果你标签。 例如:

 myBlock: { var a = 0; break myBlock; a = 1; // this is never run }; a === 0; 

您不能在范围内的某个函数中分割块范围。 这意味着你不能做这样的事情:

 foo: { // this doesn't work (function() { break foo; }()); } 

你可以通过函数做类似的事情:

 function myFunction() {myFunction:{ // you can now use break myFunction; instead of return; }} 
 throw new Error("my error message"); 

你可以简单地使用return;

 $(document).ready(function () { alert(1); return; alert(2); alert(3); alert(4); }); 

返回将返回主调用函数test1(); 并从那里继续test3();

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> <script type="text/javascript"> function test1(){ test2(); test3(); } function test2(){ alert(2); return; test4(); test5(); } function test3(){ alert(3); } function test4(){ alert(4); } function test5(){ alert(5); } test1(); </script> </body> </html> 

但如果你只是加上扔''; 这将完全停止执行而不会造成任何错误。

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> </head> <body> <script type="text/javascript"> function test1(){ test2(); test3(); } function test2(){ alert(2); throw ''; test4(); test5(); } function test3(){ alert(3); } function test4(){ alert(4); } function test5(){ alert(5); } test1(); </script> </body> </html> 

这是testing与Firefox和铬。 我不知道这是如何处理的IE或Safari

只需调用die()而不需要定义它。 你的脚本会崩溃。 🙂

当我这样做的时候,我通常会调用discombobulate()来代替,但是原理是一样的。

(实际上,这样做是抛出一个ReferenceError ,使其与Spudly的答案大致相同 – 但为了debugging目的,键入的更短)。

有可能推出自己的PHP版本:

 function die(msg) { throw msg; } function test(arg1) { arg1 = arg1 || die("arg1 is missing"); } test(); 

JSFiddle示例

使用萤火虫和光荣…

 debugger; 

从不让debugging器向前迈进。 比抛出一个适当的Error清洁,innit?

Javascript中 ,PHP的语言结构并不完全相同。 die PHP几乎等于Java中的 System.exit() ,它终止当前脚本并调用closures挂钩。 如一些用户所build议的; 在某些情况下可以使用throw Error ,但是它永远不会保证当前脚本的终止。 总是可以有一个围绕你的throw语句的exception处理块 – 除非你在最顶层的脚本块中调用它,最终只退出你正在执行的脚本块。

但是它不会阻止在这里执行第二个块(打印你好):

 <script type="text/javascript"> throw new Error('test'); </script> <script type="text/javascript"> document.write("hello"); </script> 

如果你使用nodejs,你可以使用

 process.exit(<code>); 

你可以使用return false; 这将终止您的脚本。