У меня есть этот код (приведенный ниже), и когда я пишу c1 = count();
, я вызываю функцию count()
(мое текущее понимание), поэтому замыкание запоминает c = 1 после первого вызова.
Позже, если я вызову c1()
, результат будет равен 1. Почему получается, что результат равен 1, если, когда я однажды вызвал эту функцию, написав c1=count()
, c
уже был увеличен до 1?Не должно ли значение быть 2?
function count() {
var c = 0 ;
return function() {
c += 1 ;
return c ;
};
}
Если нет,
Почему, когда я пишу эту функцию, у меня выводится «A!»?Это означает, что при написании var x=a()
я вызываю функцию, та же логика должна использоваться в функции выше, не так ли?
function a() {
alert('A!');
return function() {
alert('B!');
};
};
var x = a();