Выражение nextValue.count
делает не ссылкой на локальную переменную "count", объявленную внутри функции. Фактически невозможно создать ссылку на локальную для функции переменную из кода вне функции. То, на что вы ссылаетесь, это просто свойство объекта функции.
Итак, да, переменная "count", к которой имеет доступ возвращенная функция, фактически полностью закрыта для этой функции, и она сохраняется в замыкании, образованном вызовом функции "counter".
Если вы действительно хотите, чтобы это сработало, вы можете сделать это:
function counter() {
function actual() {
return actual.count = actual.count + 1;
}
actual.count = 0;
return actual;
}
изменить & mdash; (фиксированный поддельный код) имя «фактическое» внутри дает возвращаемому функции безопасный доступ к самому объекту функции; Первоначально я набрал здесь «this», и это не сработало бы, если внешний код не установил его явно.