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

34 lines
960 B
Markdown

Вычислить любое выражение нам поможет `eval`:
```js run
alert( eval("2+2") ); // 4
```
Считываем выражение в цикле `while(true)`. Если при вычислении возникает ошибка -- ловим её в `try..catch`.
Ошибкой считается, в том числе, получение `NaN` из `eval`, хотя при этом исключение не возникает. Можно бросить своё исключение в этом случае.
Код решения:
```js run demo
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 );
```