PHP や のように JavaScript スクリプトを終了するにはどうすればよいですexit
かdie
? それが最良のプログラミング手法ではないことはわかっていますが、そうする必要があります。
24 に答える
「終了」関数は、通常、パラメータとしてエラー メッセージとともにプログラムまたはスクリプトを終了します。たとえば、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
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 '';
}
ハンドルやイベントなどのない単純なプログラムでも、それが唯一のプロシージャである場合でも、コードを「メイン」関数に配置するのが最善です。
<script>
function main()
{
//code
}
main();
</script>
このように、プログラムを停止したい場合は、「return」を使用できます。
私の場合、使用しwindow.stop
ました。
は、現在のブラウジング コンテキストでそれ以上のリソースの読み込みを停止します。これは、ブラウザの「停止」ボタンに
window.stop()
相当します。スクリプトの実行方法により、このメソッドは親ドキュメントの読み込みを中断できませんが、画像、新しいウィンドウ、およびその他の読み込み中のオブジェクトを停止します。
使用法:
window.stop();
(ソース)
JavaScript には複数の方法があります。以下はその一部です。
方法 1:
throw new Error("Something went badly wrong!");
方法 2:
return;
方法 3:
return false;
方法 4:
new new
方法 5:
上記のメソッドを使用してカスタム関数を記述し、必要な場所で呼び出します
注: コードの実行を一時停止したい場合は、使用できます
debugger;
エラーを「スロー」せずにそれ以上のコードの実行を停止したい場合は、次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.");
これは、条件が存在する場合にスクリプトを終了する例です。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スクリプトが終了/終了します