198

PHP や のように JavaScript スクリプトを終了するにはどうすればよいですexitdie? それが最良のプログラミング手法ではないことはわかっていますが、そうする必要があります。

4

24 に答える 24

88

「終了」関数は、通常、パラメータとしてエラー メッセージとともにプログラムまたはスクリプトを終了します。たとえば、php の die(...)

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
于 2011-08-28T19:22:43.243 に答える
86

PHP の に相当する JavaScriptdie。ところで、それはただ呼び出します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 '';
}
于 2009-02-15T09:17:34.157 に答える
57

ハンドルやイベントなどのない単純なプログラムでも、それが唯一のプロシージャである場合でも、コードを「メイン」関数に配置するのが最善です。

<script> 
function main()
{
//code

}
main();
</script>

このように、プログラムを停止したい場合は、「return」を使用できます。

于 2011-09-28T14:12:26.147 に答える
8

私の場合、使用しwindow.stopました。

は、現在のブラウジング コンテキストでそれ以上のリソースの読み込みを停止します。これは、ブラウザの「停止」ボタンにwindow.stop()相当します。

スクリプトの実行方法により、このメソッドは親ドキュメントの読み込みを中断できませんが、画像、新しいウィンドウ、およびその他の読み込み中のオブジェクトを停止します。

使用法: window.stop();
(ソース)

于 2017-08-22T02:03:26.147 に答える
3

JavaScript には複数の方法があります。以下はその一部です。

方法 1:

throw new Error("Something went badly wrong!");

方法 2:

return;

方法 3:

return false;

方法 4:

new new

方法 5:

上記のメソッドを使用してカスタム関数を記述し、必要な場所で呼び出します

注: コードの実行を一時停止したい場合は、使用できます

debugger; 
于 2020-04-11T20:04:48.273 に答える
0

エラーを「スロー」せずにそれ以上のコードの実行を停止したい場合は、次window.onerrorのように一時的にオーバーライドできcross-exitます。

function exit(code) {
    const prevOnError = window.onerror
    window.onerror = () => {
        window.onerror = prevOnError
        return true
    }

    throw new Error(`Script termination with code ${code || 0}.`)
}

console.log("This message is logged.");
exit();
console.log("This message isn't logged.");
于 2020-01-09T12:06:52.667 に答える
-2

これは、条件が存在する場合にスクリプトを終了する例です。SSE クライアント側の JavaScript でこれを使用します。

<script src="sse-clint.js" host="https://sse.host" query='["q1,"q2"]' ></script>

JSON 解析から直接解析することはできません ...

if( ! SSE_HOST  ) throw new Error(['[!] SSE.js: ERR_NOHOST - finished !']);

... とにかく、一般的な考え方は次のとおりです。

if( error==true) throw new Error([ 'You have This error' ,  'At this file', 'At this line'  ]);

これにより、javasriptスクリプトが終了/終了します

于 2017-10-11T21:27:34.767 に答える