каким образом в переменной shooter записывается 10 функции, если с каждым циклом выше, они перезаписываются? Ведь после цикла, должна остаться 1 функция со значением 10, которая и запишется в массив shooters!
var shooter // Объявляем переменную
= // Записываем в переменную результат выражения справа от равно
function() {console.log( i ); }; // Создаем функцию (она и будет записана в переменную)
shooters.push(shooter); // Добавляем в конец массива функцию из переменной shooter
Общая рекомендация при разработке ПО — использовать только английские названия, а не транслитерацию родного языка. Во-первых английский — язык международный, во-вторых — почти все языки программирования используют английский язык как основной. В-третьих — смешение языков приводит к ухудшению таких качеств кода как читабельность, простота, сопровождаемость, а так же затрудняет дальнейшее профессиональное развитие разработчика, т.к. в дальнейшем надо будет все равно привыкать к правильному именованию и затруднит взаимодействие с другими разработчиками (например в команде или при работе над OpenSource кодом). Ну и такой код в резюме однозначно будет работать в минус к профессиональной оценке разработчика со стороны. Даже если он работает и в целом логика правильная.