@GizzaProger

Как создать функцию, которая генерирует другую функцию?

Я создаю график случайного полинома и мне надо генерировать этот случайный полином. Я решил создать такую функцию
let getRandomPolynom = () => x => this.getRandomZ() * x^4 + this.getRandomZ() * x^3 - this.getRandomZ() * x^2 + -this.getRandomZ() * x + 10

Я ожидал, что данная функция бедует возвращать мне другую функцию, которая является случайным полиномом, но в итоге я получаю это при вызове функции getRandomPolynom
x => this.getRandomZ() * x^4 + this.getRandomZ() * x^3 - this.getRandomZ() * x^2 + -this.getRandomZ() * x + 10
this.getRandomZ() не вычисляется. Почему?
  • Вопрос задан
  • 111 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
this.getRandomZ() не вычисляется

А с чего бы ему вычисляться? Вы же не вызвали полученную функцию. Вызовите - вычислится. Правда, результаты при каждом вызове будут разными. Потому что вызовы getRandomZ должны находится непосредственно в getRandomPolynom, а не в той функции, что он возвращает. Вызвали сколько надо раз, результаты сохранили, в возвращаемой функции подставляете:

const getRandomPolynom = () => {
  const [ A, B, C, D ] = Array.from({ length: 4 }, this.getRandomZ);
  return x => A * x ** 4 + B * x ** 3 - C * x ** 2 - D * x + 10;
};
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
XPOWER Одесса
от 3 000 до 5 500 $
04 мар. 2021, в 16:10
10000 руб./за проект
04 мар. 2021, в 15:49
500 руб./в час
04 мар. 2021, в 15:42
8000 руб./за проект