en.javascript.info/1-js/7-js-misc/5-exception/2-eval-calculator-errors/solution.md
2015-03-10 12:36:58 +03:00

969 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 );