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; 这将终止您的脚本。