Использование константы для определения функции внутри функции? - PullRequest
0 голосов
/ 15 марта 2020

Основные вопросы: 1. Как f ссылается на r и t в формуле, но нигде в коде их нет. Также ссылки кажутся циклическими. 2. Почему для f2 установлено значение f (x), что делает sh?

let x = 3;
let y = 7;
const f = function(r) { 
        return function(t) { 
              return x + y + Math.abs(r) + t; 
           } 
      };
const f2 = f(x);
x = 2;
alert(f2(17));

Этот код работает, но я не понимаю, что он делает.

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 15 марта 2020

Как f ссылается на r и t в формуле, но для них нигде в коде нет объявления для них.

Вы можете объявлять переменные, используя аргументы функции. Вот что они здесь делают.

Упрощенный пример:

function example(f) {
    console.log("f is " + f);
}

example("one");
example(2);

Почему для f2 установлено значение f (x), что это делает sh?

Он вызывает f(x) и присваивает возвращаемое значение.

Это возвращаемое значение является функцией после ключевого слова return.

Теперь f2 является функцией.

См. также Как работают ли затворы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...