Mozilla определяет замыкания так:
Замыкание — это комбинация функции и лексического окружения, в котором эта функция была определена.
A closure is the combination of a function and the lexical environment within which that function was declared.
Если эти вводные описания посчитать за «правильные» определения, то формально «ДА», является, хоть и вырожденным. В вашем примере это окружение совпадает с глобальным, поэтому ни о какой имитации приватных методов и свойств тут речи не идёт.
Чтобы сделать кошерное замыкание надо как следует обернуть сей код, чтобы в приватность его переменных никто извне не мог добраться:
function makeCounter() {
// далее ваш код:
let count = 0;
function counter() {
return count += 1;
}
// конец вашего кода.
return counter; // вернули Функцию (с её окружением)
}
var myCounter = makeCounter();
// вот теперь к значению count не добраться - приватность!
// зато
console.log(myCounter()); // 1
console.log(myCounter()); // 2
console.log(myCounter()); // 3