Во втором примере эта строка: var add = myCounter();
делает add
var только ссылкой на функцию, если вы запишете add add без скобок, она напечатает только [Function]
, ноconsole.log(add());
заставляет вызывать функцию добавления.
Чтобы первый пример работал, вы можете изменить оператор возврата функции счетчика myCounter
.
Этот код делаетmyCounter
для возврата только ссылки на функцию plus
:
function myCounter(){
function plus(){
//code
}
return plus;
}
Поэтому, чтобы заставить ее работать, вы должны дважды вызвать myCounter
:
console.log(myCounter()());
Но этозаставить функцию plus
вызываться при вызове (10) myCounter
изнутри console.log(myCounter())
:
function myCounter(){
function plus(){
//code
}
return plus();
}