В чем разница между displayName ();и вернуть displayName ;? - PullRequest
0 голосов
/ 28 мая 2018

Я начинающий разработчик.Я читал статью MDN о закрытии в JavaScript .Статья MDN использовала следующие два примера кода, чтобы объяснить основную концепцию.Хотя я понял основную концепцию, у меня есть следующие сомнения:

В чем разница между displayName(); и return displayName?

function init() {
  var name = 'Mozilla'; // name is a local variable created by init
  function displayName() { // displayName() is the inner function, a closure
    alert(name); // use variable declared in the parent function    
  }
  displayName();    
}
init();

**

function makeFunc() {
  var name = 'Mozilla';
  function displayName() {
    alert(name);
  }
  return displayName;
}

var myFunc = makeFunc();
myFunc();

Ответы [ 2 ]

0 голосов
/ 28 мая 2018

В чем разница между displayName () и возвращаемым displayName?

Разница в том, что первый вызывает функцию displayName, а второй возвращая это.Чтобы увидеть пример того, что это значит:

const log = () => console.log('I was invoked!')

const getLog = () => {
  return log
}

const doLog = () => {
  log()
}

У нас есть некоторая функция, которая при вызове 1014 * выводит на консоль.У нас также есть две другие функции, одна из которых возвращает log, а другая вызывает .Когда мы вызываем getLog(), мы не видим ничего напечатанного на консоли.Когда мы вызываем doLog(), мы делаем.

Другой момент заключается в том, что getLog возвращает значение из log.Таким образом, мы можем сделать это также:

const logByDifferentName = getLog()

, что не вызовет вызов log, а присвоит ему другое значение.

0 голосов
/ 28 мая 2018

В первом случае он выполняет функцию, а во втором случае makeFunc возвращает другую функцию. Проверьте console.log.По этой причине после myFunc() стоит (), который будет выполнять функцию, возвращаемую из makeFunc

function init() {
  var name = 'Mozilla';

  function displayName() {
    alert(name);
  }

  displayName();
}
init();

function makeFunc() {
  var name = 'Mozilla';

  function displayName() {
    alert(name);
  }
  // this is returning a function
  console.log(displayName)
  return displayName;
}

var myFunc = makeFunc();
// since it is returning a function it is getting executed ony after adding () with it
myFunc();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...