Ответ
Да, можно. Замыкания - это лишь один из способов реализации лексического окружения. Альтернатива - передача окружения явно как параметра. Пример:
// Без замыканий, с явной передачей окружения
function makeCounter(env) {
return {
increment: () => ++env.count,
get: () => env.count
};
}
const env = { count: 0 };
const counter = makeCounter(env);
counter.increment(); // 1
Здесь env передается явно, а не захватывается замыканием. Такой подход используется в некоторых языках (например, в ранних версиях Lua). Однако это менее удобно и требует ручного управления окружением.