Я хотел знать, можно ли найти через javascript, если вызов eval() имеет синтаксическую ошибку или переменную undefined и т.д.... так что скажем, я использую eval для какого-то произвольного javascript, есть ли способ для получения вывода ошибки этого eval?
Eval javascript, проверьте наличие синтаксической ошибки
Ответ 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(), что может привести к возможным атакам, при которых подобная функция не подвержена.
Поэтому, независимо от того, пожалуйста, помните о рисках перед использованием этой функции.