PHP exit
나 JavaScript와 같은 JavaScript 스크립트를 종료하려면 어떻게 die
해야합니까? 나는 이것이 최선의 프로그래밍 관행이 아니라는 것을 알고 있지만 필요합니다.
return;
충분 귀하의 요구 사항에 따라 수 있습니다, 매개 변수없이 다이 ()와 같은 역할을합니다.
PHP exit
나 JavaScript와 같은 JavaScript 스크립트를 종료하려면 어떻게 die
해야합니까? 나는 이것이 최선의 프로그래밍 관행이 아니라는 것을 알고 있지만 필요합니다.
return;
충분 귀하의 요구 사항에 따라 수 있습니다, 매개 변수없이 다이 ()와 같은 역할을합니다.
답변:
PHP와 동등한 JavaScriptdie
. 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 '';
}
"종료"기능은 일반적으로 오류 메시지와 함께 프로그램 또는 스크립트를 매개 변수로 종료합니다. 예를 들어 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
오류인지 걱정하지 않으면 다음과 같이 작성하십시오.
fail;
그러면 기본 (전역) 코드가 진행되지 않습니다. 디버깅 / 테스트의 일부 측면에 유용합니다.
window.fail
현재 브라우저에 정의되어 있지 않습니다.
mikeyMouse;
-오류가 종료됩니다. 빠르고 더러워 요.
JS 또는 노드 스크립트를 종료하는 방법 에는 여러 가지 가 있습니다 . 가장 관련성이 높은 것은 다음과 같습니다.
// 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
하여 종료 할 수 있습니다 .
필자의 경우 window.stop
브라우저에서 X 버튼을 클릭하는 것과 같은 API를 사용했습니다 .
window.stop();
장소 debugger;
는 실행을 중지하려는 자바 스크립트 코드에 키워드를. 그런 다음 자주 사용하는 브라우저의 개발자 도구를 열고 페이지를 다시로드하십시오. 이제 자동으로 일시 중지됩니다. 도구 의 소스 섹션을여십시오. debugger;
키워드가 강조 표시되고 스크립트 실행을 재개 할 수있는 옵션이 있습니다.
도움이 되길 바랍니다.
자세한 정보 :
페이지에서 모든 Javascript의 실행을 강제로 종료하는 방법을 찾고 있다면 공식적으로 승인 된 방법이 있는지 확실하지 않습니다. 보안 위험이있을 수 있습니다. 솔직히 말해서, 나는 그것이 내 머리 위로 어떻게 떨어질지 생각할 수 없다.) 일반적으로 Javascript에서는 코드 실행을 중지하려는 경우 return
어떤 기능을 실행하든 상관 없습니다. ( return
함수는 함수의 마지막 항목이고 함수가 값을 반환하지 않으면 선택 사항입니다.) 반환이 충분하지 않은 이유가있는 경우 아마도 생각하는 이유에 대한 질문에 대한 세부 정보를 편집해야합니다 당신은 그것을 필요로 할 것이고 아마도 누군가가 대체 솔루션을 제공 할 수 있습니다.
실제로 대부분의 브라우저의 Javascript 인터프리터는 오류가 발생하면 현재 스크립트 실행을 중지합니다. 따라서 설정되지 않은 변수의 속성에 액세스하는 것과 같은 것을 할 수 있습니다.
function exit() {
p.blah();
}
아마도 스크립트를 중단시킬 것 입니다 . 그러나 그것은 표준이 아니기 때문에 믿을 수는 없으며 실제로 끔찍한 연습처럼 보입니다.
편집 : 좋아, 아마도 이것은 Ólafur의 관점에서 그렇게 좋은 대답이 아니 었습니다. die()
그가 링크 한 함수는 기본적으로 내 두 번째 단락을 구현 하지만 오류가 발생합니다.
개념의 오용이지만 아마도 유일한 옵션 일 것입니다. 그리고 예, 허용 된 답변 언급과 같이 모든 이벤트 리스너를 재설정해야합니다. 내가 옳다면 단일 입국 지점이 필요할 것입니다.
그것의 상단에 : 당신은 던지는 즉시 이메일로 당신에게보고하는 페이지를 원합니다-예를 들어 Raven / Sentry를 사용할 수 있습니다. 그러나 그것은 당신이 자신에게 오탐을 만들어 낸다는 것을 의미합니다. 이 경우 기본 처리기를 업데이트하여 이러한 이벤트를 필터링하거나 Sentry의 대시 보드에서 무시할 때 해당 이벤트를 설정해야합니다.
페이지를로드하는 동안에는 작동하지 않습니다. 페이지의 디코딩도 중지합니다. 따라서 실제로 자바 스크립트가없는 페이지 변형을 사용자에게 제공하는 데 사용할 수 없습니다.
디버거가 열린 상태에서만 실행을 중지합니다. 훌륭하지만 효과는 없습니다.
스크립트에서 정의되지 않은 함수를 사용하면 "Uncaught ReferenceError"로 인해 스크립트가 중지됩니다. 나는 다음 코드를 시도하고 처음 두 줄을 실행했습니다.
이것이 스크립트를 중지시키는 가장 좋은 방법이라고 생각합니다. 다른 방법이 있다면 저에게 의견을 말하십시오. 또한 다른 가장 좋고 간단한 방법을 알고 싶습니다. BTW, 스크립트 종료를 위해 PHP와 같은 Javascript에서 종료 또는 내장 기능을 얻지 못했습니다. 누구든지 알고 있다면 알려주십시오.
alert('Hello');
document.write('Hello User!!!');
die(); //Uncaught ReferenceError: die is not defined
alert('bye');
document.write('Bye User!!!');
오류를 "throw"하지 않고 추가 코드가 실행되지 않게하려면 다음 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 클라이언트 측 자바 스크립트에서 이것을 사용합니다.
<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 스크립트를 종료 / 죽입니다.
throw는 콘솔에서 오류를 발생시키기 때문에 throw 대신 return 문을 사용합니다. 가장 좋은 방법은 상태를 확인하는 것입니다
if(condition){
return //whatever you want to return
}
콘솔에서 오류를 발생시키지 않고 해당 행에서 프로그램 실행을 중지합니다.
if (condition) { new new }
또는 을 사용할 수도 있습니다 if (condition) { purpleMonkeyDishwasher(); }
.