Является ли JavaScript вызывающая функция, вызывающая функцию 2, такой же, как и вызывающая функция 2 напрямую? - PullRequest
0 голосов
/ 25 марта 2020

Я полагаю, что верно следующее:

function outerFunc(innerFunc) {
  return innerFunc;
}
outerFunc();

совпадает с

innerFunc();

Предполагая, что innerFun c является JavaScript функцией.

Первый вопрос. Если так, всегда ли это правда? Есть ли какой-то принцип программирования (идентичность?), Который делает это таким?

Ответы [ 2 ]

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

Да, существует парадигма, называемая Javascript Закрытие функций .

Ниже приведен пример для вашего случая:

function innerFunc() {
   console.log("innerFunc");
}

function outerFunc(innerFunc) {
  return this.innerFunc;
}

outerFunc()();

// It's equals to

innerFunc();
0 голосов
/ 25 марта 2020

Так что, если вы вызовете outerFunc(), он вернет функцию innerFunc(). Чтобы позвонить innerFunc() из outerFunc, вы должны сделать следующее

let inner = outerFunc()
inner()

// OR

outerFunc()()

Вы можете подтвердить это поведение

function innerFunc(){
    console.log('inner')
}

function outerFunc(){
    console.log('outer')
    return innerFunc;
}

// Calling outerfunc would onkly print out 'outer'
outerFunc()
/*
console.log('outer')
*/

// Calling the returned function from outerFunc prints out 'outer' and 'inner'
outerFunc()()
/*
console.log('outer')
console.log('inner')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...