Как завершить скрипт в JavaScript? - PullRequest
117 голосов
/ 15 февраля 2009

Как выйти из сценария JavaScript так же, как PHP exit или die? Я знаю, что это не лучшая практика программирования, но мне нужно.

Ответы [ 16 ]

0 голосов
/ 01 марта 2019

throw "";

Это неправильное использование концепции, но, вероятно, единственный вариант. И, да, вам придется сбросить все прослушиватели событий, как упоминается в принятом ответе. Вам также понадобится одна точка входа, если я прав.

Вверху: вам нужна страница, которая сообщает вам по электронной почте, как только она выдается - вы можете использовать для этого, например, Raven / Sentry. Но это означает, что вы производите ложные срабатывания. В этом случае вам также необходимо обновить обработчик по умолчанию, чтобы отфильтровывать такие события или устанавливать такие события на игнорирование на панели инструментов Sentry.

window.stop ();

Это не работает при загрузке страницы. Останавливает также декодирование страницы. Таким образом, вы не можете использовать его, чтобы предложить пользователю вариант страницы без javascript.

отладчик;

Останавливает выполнение только при открытом отладчике. Прекрасно работает, но не доставляется.

0 голосов
/ 25 декабря 2018

Просто создайте условие BOOL, здесь нет необходимости в сложном коде ..

Если хотя бы один раз вы установите его в истинное значение или несколько раз это даст вам одну линию решения / не несколько - в основном все просто.

0 голосов
/ 25 октября 2018

Эта маленькая функция очень похожа на имитацию выхода PHP (). Как и с другими решениями, больше ничего не добавляйте.

function exit(Msg)
    {
    Msg=Msg?'*** '+Msg:'';
    if (Msg) alert(Msg);
    throw new Error();
    } // exit
0 голосов
/ 25 марта 2018

ОБНОВЛЕНИЕ: Это работает, пока вы не catch это!

throw window.location.assign('dead.html');
0 голосов
/ 12 октября 2017

Это пример того, что, если условие существует, завершите сценарий. Я использую это в моем клиентском JavaScript 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

0 голосов
/ 15 февраля 2009

Если вы ищете способ принудительно прекратить выполнение всего Javascript на странице, я не уверен, что есть официально санкционированный способ сделать это - похоже, что это может быть угрозой безопасности (хотя, честно говоря, я не могу думать о том, как это будет с моей головы). Обычно в Javascript, когда вы хотите, чтобы ваш код прекратил работать, вы просто return из любой выполняемой функции. (Оператор return является необязательным, если он является последним в функции, и функция не должна возвращать значение). Если по какой-либо причине возврат не достаточно хорош для вас, вам, вероятно, следует отредактировать более подробную информацию в вопросе, почему вы думаете, что вам это нужно, и, возможно, кто-то может предложить альтернативное решение.

Обратите внимание, что на практике интерпретаторы Javascript большинства браузеров просто останавливают текущий скрипт, если они сталкиваются с ошибкой. Таким образом, вы можете сделать что-то вроде доступа к атрибуту неустановленной переменной:

function exit() {
    p.blah();
}

и вероятно прервет выполнение сценария. Но вы не должны на это рассчитывать, потому что это совсем не стандартно, и это действительно кажется ужасной практикой.

РЕДАКТИРОВАТЬ : ОК, может быть, это был не очень хороший ответ в свете Олафура. Хотя функция die(), с которой он связан, в основном реализует мой второй абзац, то есть просто выдает ошибку.

...