Закрытие - это просто ссылка между функцией и областью, в которой она была создана, ссылка, которая существует, когда функция использует переменную из этой области.
У вас есть эта проблема, потому что вы не сохраняетезакрытие: вы воссоздаете его каждый console.log
, когда вы звоните cat()
.
Измените
console.log(cat()());
console.log(cat()());
на
let c = cat();
console.log(c());
console.log(c());