en.javascript.info/archive/2-eval-calculator-errors/solution.md
Ilya Kantor ab9ab64bd5 up
2017-03-21 14:41:49 +03:00

960 B

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

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

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

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

Код решения:

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