Локальная переменная счетчика в JavaScript

Рассмотрим следующий код:

function test() { let num = 1; return function() { console.log(num); num++; }; } test()(); // выведет 1 test()(); // выведет 1

Почему всегда будет выводится число 1? Для того, чтобы понять это, перепишем наш код по другому:

function test() { let num = 1; return function() { console.log(num); num++; }; }; let func1 = test(); //!! первая функция func1(); //выведет 1 let func2 = test(); //!! вторая функция func2(); //выведет 1

То есть каждый вызов функции test таким образом: test()(), создает свою функцию со своим замыканием и сразу же вызывает эту функцию.

Определите, не запуская код, что выведется в консоль:

function func() { let num = 0; return function() { console.log(num); num++; }; } func()(); func()(); func()();

Определите, не запуская код, что выведется в консоль:

function func() { let num = 0; return function() { console.log(num); num++; }; } let test = func; test()(); test()(); test()();



Чат с GPT Компилятор