Как в качестве параметра функции передать оператор сложения( + )
Нужно подобие такого кода:
let func = (prop) => {
if(2 prop 2 == 4) {
console.log('Ура! Работает!');
}
}
func('+');
Только рабочее. Не могу понять, как в качестве параметра передать + т.е. по сути, если правильно задать условие это будет выглядеть как
if(2 + 2 == 4) {
Ответы (3 шт):
Автор решения: OPTIMUS PRIME
→ Ссылка
Вы пытаетесь сделать то, чего просто нет в синтаксисе языка) Но можно оформить это как-то по другому:
let calc = getCalcTool(); // При вызове, функция создает объект `local_math`
// И возвращает функцию, которая присваивается в `calc`.
// При вызове, calc будет помнить созданный объект и доставать оттуда нужные функции
if (calc(3, "+", 2) === 5) console.log("√");
if (calc(3, "-", 2) === 1) console.log("√");
if (calc(3, "*", 2) === 6) console.log("√");
if (calc(3, "/", 2) === 1.5) console.log("√");
function getCalcTool() {
let local_math = {
"+": (a, b) => a + b,
"-": (a, b) => a - b,
"/": (a, b) => a / b,
"*": (a, b) => a * b,
};
return function(a, operator, b) {
return local_math[operator](a, b);
}
}
Автор решения: artomich
→ Ссылка
Ну так немного нельзя...
Максимум - функция eval(). Она js-вычисляет строковое значение:
eval('2+3'); // 5
const func = (prop) => {
if (eval(`2 ${prop} 2`) == 4) console.log('Вот теперь получилось');
}
func('+'); // Вот теперь получилось
Правда, eval использовать очень не рекомендуют. Это не безопасно
Автор решения: bipll
→ Ссылка
let func = (prop) => {
if(prop(2, 2) == 4) {
console.log('Ура! Работает!');
}
}
func((a, b) => a + b)
?