Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.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脚本标记?_Javascript_Web Frontend - Fatal编程技术网

如何尽早退出javascript脚本标记?

如何尽早退出javascript脚本标记?,javascript,web-frontend,Javascript,Web Frontend,我有一个页面,上面有一堆。。。。部分。在其中一个脚本中,我完成了一半,决定停止,不运行此脚本标记的其余内容,但仍运行页面上的其他代码段。有没有办法不用在函数调用中包装整个代码段就可以做到这一点 例如: <script type='text/javascript'> console.log('1 start'); /* Exit here */ console.log('1 end'); </script> <script type='text

我有一个页面,上面有一堆。。。。部分。在其中一个脚本中,我完成了一半,决定停止,不运行此脚本标记的其余内容,但仍运行页面上的其他代码段。有没有办法不用在函数调用中包装整个代码段就可以做到这一点

例如:

<script type='text/javascript'>
    console.log('1 start');
    /* Exit here */
    console.log('1 end');
</script>
<script type='text/javascript'>
    console.log('2 start');
    console.log('2 end');
</script>
而不是
1结束

显而易见的答案是将脚本包装到函数中:

<script type='text/javascript'>
    (function(){
        console.log('1 start');
        return;
        console.log('1 end');
    })();
</script>

(功能(){
console.log('1 start');
返回;
console.log('1 end');
})();

虽然这通常是最好的方法,但在某些情况下并不合适。所以我的问题是,如果有的话,还有什么其他方法可以做到这一点?或者,如果没有,为什么不呢?

实现所需功能的一种方法(停止执行给定脚本块,而不将其包装到函数中)是抛出错误

<script type='text/javascript'>
    console.log('1 start');
    throw new Error();
    console.log('1 end');
</script>

console.log('1 start');
抛出新错误();
console.log('1 end');

当然,这样做的缺点是会导致将错误记录到控制台。

您可以使用break语句:

breakCode:{
文件。写入(“1开始”);
/*离开这里*/
破译破译码;
文件。写入(“1结束”);

}
如果要使用
抛出方法停止脚本标记(如中所述),但不在控制台中抛出错误消息,下面是一种简单的方法:


log(“这将被记录到控制台。”);
window.onerror=()=>{window.onerror=未定义;返回true;}
掷0;
log(“这不会”);
该代码只是通过
window.onerror
捕获错误(返回
true
隐藏错误)

如果需要经常使用,您当然可以创建一个全局函数:


函数scriptReturn(){
window.onerror=()=>{window.onerror=未定义;返回true;}
掷0;
}
...
log(“这将被记录到控制台。”);
scriptReturn();
log(“这不会”);
如果您需要在代码的其他地方使用
window.onerror
,您可以使用
addEventListener

window.addEventListener(“错误”,函数(e){…})

无条件退出?我同意@artm的想法-鉴于您(显然)希望无条件退出,您当然可以删除
控制台.log('1 end')脚本块中的行!毫无疑问,还有更多的问题,所以我建议您添加更多的细节来解释为什么要退出js块。最终,尽管我怀疑最好的方法是围绕设计和构造代码——在这方面,内联脚本块的使用并不重要;)@NathanRussell我不确定你是否掌握了“榜样”的概念。。。以上代码不是实际生产代码;这只是为了说明情况。在实际的生产系统中,“1-end”部分可能是您有时想要执行而不是其他部分,或者它可能包含在另一个您无法修改的文件中,或者其他一些情况。我不知道在什么情况下这是必要的;我问这个问题主要是出于好奇,因为我认为这是一个很好的问题。这不起作用,因为他的第二个
标签不会运行。是的,它会运行-我在写我的答案(至少在Chrome上)之前通过测试进行了双重检查。哇,goto的回归。。。注意:这只存在于
{…}
块中,而不存在可能定义更多函数等的整个脚本(除非这些函数是在块中定义的,但这会使它们的访问变得复杂)
<script type='text/javascript'>
    console.log('1 start');
    throw new Error();
    console.log('1 end');
</script>