Как работает возврат функции внутри функции - PullRequest
0 голосов
/ 26 августа 2018

Я чувствую, что мой пример это хорошо объясняет.Я не уверен, как работает функция, возвращающаяся внутри функции.Я чувствую, что решение ниже демо поможет мне понять.Любые другие ссылки или документы было бы неплохо прочитать, хотя.

function LogFunction() {
  return function() {
    return "just console log this";
  };
}

console.log(LogFunction());
// "just console log this"   <<< I want this
// "[Function]"              <<< I am getting this

Ответы [ 4 ]

0 голосов
/ 26 августа 2018

В JavaScript функции известны как «Первоклассная функция», это означает, что вы можете возвращать / передавать функции как любой другой тип, например (объект / числа).Вы можете найти подробнее об этом здесь .

Вы можете разбить эту переменную на переменные, чтобы сделать ее более понятной, например:

function LogFunction() {
  return function() {
    return "just console log this";
  };
}

var a = LogFunction()
console.log( a() );

Однако, как другие указали правильно, выВы можете вызвать это напрямую

console.log( LogFunction()() );

В примерах переменных, когда LogFunction() вызывается с (), вы вызываете функцию, а результат этого вызова присваивается переменной a, какрезультат вызова функции - это другая функция, вам нужно вызвать результат предыдущей функции, чтобы получить доступ к результату этой функции a().

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

const LogFunction = () => () => "just console log this";
console.log( LogFunction()() );
0 голосов
/ 26 августа 2018

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

function LogFunction() {
  return function() {
    return "just console log this";
  };
}
console.log(LogFunction()());

//You can also get the function reference in a variable, and execute it:

const innerFunction = LogFunction(); 
//assigning the returned function reference.

console.log(innerFunction()); 
//executes the returned reference
0 голосов
/ 26 августа 2018

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

function LogFunction() {
  return function() {
    return "just console log this";
  };
}

console.log(LogFunction()());

Вы можете использовать меньше кода:

function LogFunction() {
  return "just console log this";
}

console.log(LogFunction())
0 голосов
/ 26 августа 2018
console.log((LogFunction())());

LogFunction возвращает функцию.Так что LogFubction() - это функция.Вы просто называете это

...