renovations
This commit is contained in:
parent
c7d4c7e3ff
commit
e1948130f6
170 changed files with 1496 additions and 1161 deletions
|
@ -0,0 +1,36 @@
|
|||
Вычислить любое выражение нам поможет `eval`:
|
||||
|
||||
```js
|
||||
//+ run
|
||||
alert( eval("2+2") ); // 4
|
||||
```
|
||||
|
||||
Считываем выражение в цикле `while(true)`. Если при вычислении возникает ошибка -- ловим её в `try..catch`.
|
||||
|
||||
Ошибкой считается, в том числе, получение `NaN` из `eval`, хотя при этом исключение не возникает. Можно бросить своё исключение в этом случае.
|
||||
|
||||
Код решения:
|
||||
|
||||
```js
|
||||
//+ 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);
|
||||
```
|
||||
|
13
1-js/7-js-misc/5-exception/2-eval-calculator-errors/task.md
Normal file
13
1-js/7-js-misc/5-exception/2-eval-calculator-errors/task.md
Normal file
|
@ -0,0 +1,13 @@
|
|||
# Eval-калькулятор с ошибками
|
||||
|
||||
[importance 5]
|
||||
|
||||
Напишите интерфейс, который принимает математическое выражение (в `prompt`) и результат его вычисления через `eval`.
|
||||
|
||||
**При ошибке нужно выводить сообщение и просить переввести выражение**.
|
||||
|
||||
Ошибкой считается не только некорректное выражение, такое как `2+`, но и выражение, возвращающее `NaN`, например `0/0`.
|
||||
|
||||
[demo /]
|
||||
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue