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