#javascript #reactjs
#javascript #reactjs
Вопрос:
Я получаю указанную выше ошибку в функции в моем проекте и упростил код до приведенного ниже. Консоль успешно регистрирует правильный результат, но затем все еще появляется наложение и ошибка.
Есть ли какой-нибудь способ предотвратить это? Кажется странным выдавать ошибку, когда она все еще выполняется правильно.
func1 = (x,y) => {
let result=(x y)
console.log(result)
}
func2 = x => {
x() // <= TypeError pointing to this not being a function
}
func2(func1(1,4)) // returns 5 but still getting TypeError
Ответ №1:
func2
принимает функцию в качестве параметра, но вы передаете ее func1(1,4)
как параметр, который вычисляется undefined
как (поскольку func1
ничего не возвращает).
Передайте функцию, которая вызывает func
с нужными параметрами, если это то, что вы хотите сделать:
const func1 = (x, y) => {
const result = x y;
console.log(result);
}
const func2 = x => {
x();
};
func2(() => func1(1, 4));
Или, если вы хотите сделать его более функциональным, вы даже можете сделать что-то вроде:
const func1 = x => y => x y;
const func2 = x => x;
console.log(func2(func1)(1)(4));
Комментарии:
1. Блестяще! Большое спасибо за подробное изложение. Вызов сделал свое дело.
Ответ №2:
Вы уже отправляете функции в качестве параметров. Входящее свойство уже является функцией. Вам не нужно снова вводить ‘()’.
const func1 = (x, y) => {
const result = x y;
console.log(result);
}
const func2 = x => {
x;
};
func2(func1(1, 4));