Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript等价于PHP’;让我们死吧_Javascript - Fatal编程技术网

JavaScript等价于PHP’;让我们死吧

JavaScript等价于PHP’;让我们死吧,javascript,Javascript,JavaScript中是否有类似“死”的东西?我尝试过使用“break”,但不起作用:)如果标记块作用域,则只能中断它。例如: myBlock: { var a = 0; break myBlock; a = 1; // this is never run }; a === 0; 不能从作用域中的函数中断开块作用域。这意味着你不能做以下事情: foo: { // this doesn't work (function() { break foo; }()); }

JavaScript中是否有类似“死”的东西?我尝试过使用“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;
}}

您可以简单地使用
返回示例

$(document).ready(function () {
        alert(1);
        return;
        alert(2);
        alert(3);
        alert(4);
});
返回将返回到主调用函数test1();并从那里继续到test3()


函数test1(){
test2();
test3();
}
函数test2(){
警报(2);
返回;
test4();
test5();
}
函数test3(){
警惕(3);
}
函数test4(){
警惕(4);
}
函数test5(){
警惕(5);
}
test1();
但如果你只是加上抛出“;这将完全停止执行,而不会导致任何错误

<!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>

函数test1(){
test2();
test3();
}
函数test2(){
警报(2);
抛出“”;
test4();
test5();
}
函数test3(){
警惕(3);
}
函数test4(){
警惕(4);
}
函数test5(){
警惕(5);
}
test1();

这是通过firefox和chrome进行测试的。我不知道IE或Safari是如何处理这一问题的。您可以使用自己的PHP版本:

function die(msg)
{
    throw msg;
}

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

test();

使用萤火虫和光荣的

debugger;
永远不要让调试器向前迈出任何一步。比抛出正确的
错误更干净,不是吗?

只需调用
die()
,而不定义它。您的脚本将崩溃。:)

当我这样做时,我通常调用
discomboulate()
,但原理是一样的

(实际上,这会抛出一个
ReferenceError
,使其与Spudy的答案大致相同-但出于调试目的,它的输入较短。)

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

Javascript中,PHP的语言构造
die
没有精确的对等项die
相当于Java中的
System.exit()
,它终止当前脚本并调用shutdown hook。 正如一些用户所建议的那样<代码>抛出错误
在某些情况下可以使用,但是它永远不能保证当前脚本的终止。 在您的
throw
语句周围总是会有一个异常处理块,除非您在最顶层的脚本块上调用它,它最终只会退出您正在执行的脚本块

但是,它不会阻止在此处执行第二个块(打印hello):


抛出新错误(“测试”);
写下“你好”;

如果您使用的是nodejs,则可以使用

process.exit(<code>);

警惕(“我是ajith fan”);
警惕(“我爱拳击”);
警惕(“我爱MMA”);

这应该像die()一样工作

您可以尝试以下方法:

return 0;

在停止进程的情况下,它可以工作。

JS中没有与php die()等效的函数退出, 如果您没有使用任何函数,那么您可以简单地使用return

return;
用于开发目的的全局die()函数:

var die = function(msg) {
    throw new Error(msg);
}
使用die():



看到这个了吗:“die”,比如“goto”,与结构化编程不兼容。这些类型的说明决不能用于严肃的项目<代码>函数die(str){throw new Error(str | | |“Script end by death”)}
或其他更好的选项,但这会起作用。如果您只想运行脚本的第一部分以确保其工作,则可能有助于调试。@stefita为什么您的注释不包含在答案中??exit()正是我需要的。另一种方法是运行自动调用循环,将运行1599次,然后停止执行。谢谢。@AdrianMaire你的心在正确的地方,但是问题的“为什么”不应该成为争论的焦点。
die
goto
eval
等的罪恶被无休止地重复(并非毫无价值),但它们都有其特殊用途,尤其是在低级别调试中。否则语言就不会包括它们。在这种情况下,
return
throw
的JS等价物是无害的。这绝对是答案,就像die()一样工作;然而,人们不应该关心firebug的红色“1错误”!我认为,如果PHP有一个“firebug”等价物,它还应该在die()上写“1错误”;-)回答得好!这不会在IE8中产生一个警告对话框吗?不是1对1的等价物,因为PHP也有未捕获的异常。这不会完全停止执行,但只会大致在抛出时停止。具体细节非常模糊,但我很确定脚本可以在其他地方继续运行。我从来不知道如何标记块范围,更不用说编写块范围了。这是否意味着
foo:{}
是一个对象?不是。它是一个块范围。这与
foo:if(true){…}
相同,因为您不能“从作用域中的函数中断开块作用域”,所以是否有其他选择?据我所知,
return
只退出封闭函数。当您想停止执行整个脚本时,它不起作用。hmmm是的,您是对的,它不会停止所有脚本的执行。
抛出“”
:…而不会导致任何错误…-不完全是
Uncaught”“
使用自定义的未定义标识符非常有创意!我喜欢
die
的直观和简洁。在记录特定的错误消息时,它确实缺少
throw
的好处,但有时仅仅是行号就足够了。顺便说一句,
die不带括号(un-)也可以工作,或者干脆死掉;在您希望javascript停止的行中。这个答案非常有JS意识^^^如果它能工作,就不会脏了!大概只有在最高层。PHP的die()可以在任何级别被调用,并且会导致PHP解释器立即消失。不完全一样!我想说的是,在像
var a=arguments[3]| | die('message')
这样的情况下,这是行不通的。仪表
<script>
     alert("i am ajith fan");
     <?php die(); ?>
     alert("i love boxing");
     alert("i love MMA");
</script>
function die(msg = ''){
    if(msg){
        document.getElementsByTagName('html')[0].innerHTML = msg;
    }else{
        document.open();
        document.write(msg);
        document.close();
    }
    throw msg;
}
return 0;
return;
var die = function(msg) {
    throw new Error(msg);
}
die('Error message here');