Подтвердить что ты не робот

Eval javascript, проверьте наличие синтаксической ошибки

Я хотел знать, можно ли найти через javascript, если вызов eval() имеет синтаксическую ошибку или переменную undefined и т.д.... так что скажем, я использую eval для какого-то произвольного javascript, есть ли способ для получения вывода ошибки этого eval?

4b9b3361

Ответ 1

Вы можете проверить, действительно ли ошибка является SyntaxError.

try {
    eval(code); 
} catch (e) {
    if (e instanceof SyntaxError) {
        alert(e.message);
    }
}

Ответ 2

При использовании try catch для обнаружения определенного типа ошибки следует убедиться, что другие типы исключений не подавляются. В противном случае, если оцениваемый код выкинет другой вид исключения, он может исчезнуть и вызвать неожиданное поведение кода.

Я бы предложил написать такой код:

try {
    eval(code); 
} catch (e) {
    if (e instanceof SyntaxError) {
        alert(e.message);
    } else {
        throw( e );
    }
}

Обратите внимание на раздел "else".

Ответ 3

Вы можете использовать http://www.jslint.com/, который содержит парсер javascript, написанный ni javascript. Это даст вам много информации о вашем коде, его можно настроить для более расслабленного или нет, и т.д.

Ответ 4

В соответствии с документацией Mozilla для eval:

eval возвращает значение последнего оцениваемого выражения.

Итак, я думаю, вам может быть не повезло. В этом же документе также рекомендуется использовать eval:

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

Поэтому, независимо от того, пожалуйста, помните о рисках перед использованием этой функции.