Будет ли это замыкание?

Ребята, если я экспортирую функцию print и вызову её в файле index.js - это будет замыканием?

const number = 0;

const print = () => {
  console.log(number)
};

export { print }

Ответы (1 шт):

Автор решения: Stanislav Volodarskiy

Да, это замыкание. Документация Closures утверждает:

In JavaScript, closures are created every time a function is created, at function creation time.

Другое дело, что это замыкание не ссылается на локальные переменные других функций, так что оно может быть оптимизировано и удалено. Получится обычная функция, которая ссылается только на глобальные объекты.

Если не прикрываться документацией, то можно сказать что в этом случае замыкание не нужно и может быть удалено.

P.S. number не глобальная переменная, а переменная модуля. Но чтобы хранить на неё ссылку, замыкание не нужно. Эта переменная живёт вечно, при компиляции функции можно установить на неё ссылку, которая ничем не будет отличаться от ссылки на глобальные объекты.

→ Ссылка