Eval-калькулятор с ошибками
важность: 5
Напишите интерфейс, который принимает математическое выражение (в prompt
) и выводит результат его вычисления через eval
.
При ошибке нужно выводить сообщение и просить переввести выражение.
Ошибкой считается не только некорректное выражение, такое как 2+
, но и выражение, возвращающее NaN
, например 0/0
.
Вычислить любое выражение нам поможет eval
:
alert( eval("2+2") ); // 4
Считываем выражение в цикле while(true)
. Если при вычислении возникает ошибка – ловим её в try..catch
.
Ошибкой считается, в том числе, получение NaN
из eval
, хотя при этом исключение не возникает. Можно бросить своё исключение в этом случае.
Код решения:
var expr, res;
while (true) {
expr = prompt("Введите выражение?", '2-');
if (expr == null) break;
try {
res = eval(expr);
if (isNaN(res)) {
throw new Error("Результат неопределён");
}
break;
} catch (e) {
alert( "Ошибка: " + e.message + ", повторите ввод" );
}
}
alert( res );