当前位置:  开发笔记 > 编程语言 > 正文

如何在Javascript中终止脚本

如何解决《如何在Javascript中终止脚本》经验,为你挑选了5个好方法。

我需要一个能退出js脚本的代码,就像PHP'exit'或'die'一样.(我知道它不是最好的编程实践,但我需要它).



1> Ólafur Waage..:

PHP的等价物die.BTW它只是打电话exit()(感谢splattne):

function exit( status ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Brett Zamir (http://brettz9.blogspot.com)
    // +      input by: Paul
    // +   bugfixed by: Hyam Singer (http://www.impact-computing.com/)
    // +   improved by: Philip Peterson
    // +   bugfixed by: Brett Zamir (http://brettz9.blogspot.com)
    // %        note 1: Should be considered expirimental. Please comment on this function.
    // *     example 1: exit();
    // *     returns 1: null

    var i;

    if (typeof status === 'string') {
        alert(status);
    }

    window.addEventListener('error', function (e) {e.preventDefault();e.stopPropagation();}, false);

    var handlers = [
        'copy', 'cut', 'paste',
        'beforeunload', 'blur', 'change', 'click', 'contextmenu', 'dblclick', 'focus', 'keydown', 'keypress', 'keyup', 'mousedown', 'mousemove', 'mouseout', 'mouseover', 'mouseup', 'resize', 'scroll',
        'DOMNodeInserted', 'DOMNodeRemoved', 'DOMNodeRemovedFromDocument', 'DOMNodeInsertedIntoDocument', 'DOMAttrModified', 'DOMCharacterDataModified', 'DOMElementNameChanged', 'DOMAttributeNameChanged', 'DOMActivate', 'DOMFocusIn', 'DOMFocusOut', 'online', 'offline', 'textInput',
        'abort', 'close', 'dragdrop', 'load', 'paint', 'reset', 'select', 'submit', 'unload'
    ];

    function stopPropagation (e) {
        e.stopPropagation();
        // e.preventDefault(); // Stop for the form controls, etc., too?
    }
    for (i=0; i < handlers.length; i++) {
        window.addEventListener(handlers[i], function (e) {stopPropagation(e);}, true);
    }

    if (window.stop) {
        window.stop();
    }

    throw '';
}


您无法停止XMLHttpRequest处理程序.当前代码不会停止执行间隔或超时.演示:jsfiddle.net/skibulk/wdxrtvus/1您可能会将此视为修复:stackoverflow.com/a/8860203/6465140

2> Lorenz Lo Sa..:

"exit"函数通常退出程序或脚本以及错误消息作为参数.例如在php中死(...)

die("sorry my fault, didn't mean to but now I am in byte nirvana")

JS中的等价物是用throw关键字表示错误,如下所示:

throw new Error();

你可以轻松测试这个:

var m = 100;
throw '';
var x = 100;

x
>>>undefined
m
>>>100


@Sydwell:如果你用catch块包围它,它将被捕获并且程序不会终止,这里无视这一点.
不要忘记代码应该被try catch块包围
不要忘记你可以在错误中添加一条消息:throw new Error('variable ='+ x); 这是一种在您处理脚本并获取变量值时快速结束脚本的好方法.

3> 小智..:

即使在没有句柄,事件等的简单程序中,最好将代码放在"main"函数中,即使它是唯一的过程:


这样,当您想要停止程序时,您可以使用"返回".



4> not2qubit..:

有许多方法可以退出JS或Node脚本.以下是最相关的:

// This will never exit!
setInterval((function() {  
    return;
}), 5000);

// This will exit after 5 seconds, with signal 1
setTimeout((function() {  
    return process.exit(1);
}), 5000);

// This will also exit after 5 seconds, and print its (killed) PID
setTimeout((function() {  
    return process.kill(process.pid);
}), 5000);

// This will also exit after 5 seconds and create a core dump.
setTimeout((function() {  
    return process.abort();
}), 5000);

如果您在REPL中(即在node命令行上运行后),则可以键入.exit退出.



5> Marc..:

如果您不在乎这是一个错误,请输入:

fail;

这将阻止您的主要(全局)代码继续进行。对于调试/测试的某些方面很有用。


关键是-您也可以执行`mikeyMouse;`-错误将终止。又快又脏。
推荐阅读
Life一切安好
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有