Не работает функция: Unexpected token, expected ";"
Вот код который должен делать арифметическое дейстивие: умножать, делить и т.д. (в зависимости от аргумента):
let action = (a, b, operator) => a operator b
action(8, 2, "/") // Должно быть 4 но не выводит
Но мне выдает ошибку
"Unexpected token, expected ";" (1:35)".
Что интересно, этот код работает:
let action2 = (a, b) => a / b
action2(8, 2) // => Выводит 4, как и должно быть
Помогите, пожалуйста, найти и исправить проблему?
Ответы (2 шт):
Вам нужно "заставить" JS вычислить строку с оператором — от того, что вы просто поставите в ряд числа и строчку с оператором, магическим образом выражение не вычислится. Попробуйте так:
let action = (a, b, operator) => eval(`${a} ${operator} ${b}`);
console.log(action(8, 2, "/"));
let action = (a, b, operator) => a operator b
В коде нельзя разбросать случайные переменные через пробелы. А если расставить требуемые точки-запятые,
let action = (a, b, operator) => a; operator; b;
↓
let action = (a, b, operator) => a;
operator;
b;
Оно уже по очевидной причине не будет работать как ожидалось.
console.log( action(3, "+", 2) );
console.log( action(3, "-", 2) );
console.log( action(3, "*", 2) );
console.log( action(3, "/", 2) );
console.log( action(3, "^", 2) );
function action (a, oper, b) {
switch (oper) {
case "+": return a + b;
case "-": return a - b;
case "*": return a * b;
case "/": return a / b;
case "^": return a ** b;
default: throw new Error("Unknown operator: " + oper);
}
}