en.javascript.info/1-js/7-js-misc/5-exception/2-eval-calculator-errors/solution.md
2015-01-14 10:23:45 +03:00

959 B

Вычислить любое выражение нам поможет eval:

//+ run
alert( eval("2+2") ); // 4

Считываем выражение в цикле while(true). Если при вычислении возникает ошибка -- ловим её в try..catch.

Ошибкой считается, в том числе, получение NaN из eval, хотя при этом исключение не возникает. Можно бросить своё исключение в этом случае.

Код решения:

//+ run demo
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);